{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1c27b45e",
   "metadata": {},
   "source": [
    "# IMDb 电影评论情感分析研究\n",
    "\n",
    "## 研究概述\n",
    "本研究使用IMDb电影评论数据集进行情感分析，比较不同特征提取方法（TF-IDF、PCA、Word2Vec）和机器学习模型的性能。\n",
    "\n",
    "### 研究目标\n",
    "1. 比较不同特征提取方法的效果\n",
    "2. 评估多种机器学习模型的性能\n",
    "3. 分析模型在情感分类任务中的优缺点\n",
    "4. 为论文写作提供完整的实验框架\n",
    "\n",
    "### 实验流程\n",
    "1. **数据预处理**：文本清洗、分词、去除停用词\n",
    "2. **特征工程**：TF-IDF向量化、PCA降维、Word2Vec词嵌入\n",
    "3. **模型训练**：多种机器学习算法对比\n",
    "4. **性能评估**：准确率、AUC、训练时间等指标\n",
    "5. **结果可视化**：ROC曲线、混淆矩阵、t-SNE等"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16391f0d",
   "metadata": {},
   "source": [
    "# 1. 环境设置与数据加载\n",
    "\n",
    "## 1.1 导入必要库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "18744d53",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "所有库导入成功！\n",
      "PyTorch版本: 2.7.1+cu128\n",
      "设备: cuda\n",
      "NumPy版本: 1.26.4\n"
     ]
    }
   ],
   "source": [
    "# 基础库\n",
    "import os\n",
    "import time\n",
    "import warnings\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from collections import Counter\n",
    "\n",
    "# 文本处理\n",
    "import nltk\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.tokenize import word_tokenize\n",
    "import string\n",
    "from wordcloud import WordCloud\n",
    "\n",
    "# 机器学习\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.manifold import TSNE\n",
    "from sklearn.model_selection import GridSearchCV, cross_val_score\n",
    "from sklearn.metrics import (\n",
    "    accuracy_score,\n",
    "    classification_report,\n",
    "    confusion_matrix,\n",
    "    roc_curve,\n",
    "    auc,\n",
    "    roc_auc_score,\n",
    "    precision_recall_curve,\n",
    ")\n",
    "\n",
    "# 机器学习模型\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import MultinomialNB\n",
    "\n",
    "# 深度学习 - PyTorch\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torch.nn.functional as F\n",
    "from torch.utils.data import Dataset, DataLoader, TensorDataset\n",
    "from torch.nn.utils.rnn import pad_sequence\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "# Word2Vec\n",
    "from gensim.models import Word2Vec\n",
    "\n",
    "# 设置随机种子确保结果可重现\n",
    "np.random.seed(42)\n",
    "torch.manual_seed(42)\n",
    "if torch.cuda.is_available():\n",
    "    torch.cuda.manual_seed(42)\n",
    "\n",
    "# 设置设备\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "# 中文字体设置\n",
    "plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"]\n",
    "plt.rcParams[\"axes.unicode_minus\"] = False\n",
    "\n",
    "# 忽略警告\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "print(\"所有库导入成功！\")\n",
    "print(f\"PyTorch版本: {torch.__version__}\")\n",
    "print(f\"设备: {device}\")\n",
    "print(f\"NumPy版本: {np.__version__}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "79ef92fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NLTK配置完成！\n"
     ]
    }
   ],
   "source": [
    "# NLTK数据路径配置\n",
    "os.environ[\"NLTK_DATA\"] = r\"D:\\AI_Models\\NLTK\\nltk_data\"\n",
    "nltk.data.path.append(r\"D:\\AI_Models\\NLTK\\nltk_data\")\n",
    "\n",
    "# 下载必要的NLTK数据（如果需要）\n",
    "# nltk.download('stopwords')\n",
    "# nltk.download('punkt')\n",
    "\n",
    "print(\"NLTK配置完成！\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e40d4a94",
   "metadata": {},
   "source": [
    "## 1.2 数据加载与探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "77ec9443",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据加载完成！\n",
      "训练集样本数: 25000\n",
      "测试集样本数: 25000\n",
      "训练集正负样本比例: 0.50\n",
      "测试集正负样本比例: 0.50\n",
      "\n",
      "样本评论预览: Bromwell High is a cartoon comedy. It ran at the same time as some other programs about school life, such as \"Teachers\". My 35 years in the teaching profession lead me to believe that Bromwell High's ...\n"
     ]
    }
   ],
   "source": [
    "def load_imdb_data(data_path):\n",
    "    \"\"\"\n",
    "    加载IMDb电影评论数据集\n",
    "\n",
    "    Args:\n",
    "        data_path (str): 数据集路径\n",
    "\n",
    "    Returns:\n",
    "        tuple: (训练评论, 训练标签, 测试评论, 测试标签)\n",
    "    \"\"\"\n",
    "    train_pos_path = os.path.join(data_path, \"train\", \"pos\")\n",
    "    train_neg_path = os.path.join(data_path, \"train\", \"neg\")\n",
    "    test_pos_path = os.path.join(data_path, \"test\", \"pos\")\n",
    "    test_neg_path = os.path.join(data_path, \"test\", \"neg\")\n",
    "\n",
    "    def load_reviews(path, label):\n",
    "        \"\"\"加载指定路径下的评论文件\"\"\"\n",
    "        reviews = []\n",
    "        labels = []\n",
    "        for filename in os.listdir(path):\n",
    "            if filename.endswith(\".txt\"):\n",
    "                with open(os.path.join(path, filename), \"r\", encoding=\"utf-8\") as file:\n",
    "                    reviews.append(file.read())\n",
    "                    labels.append(label)\n",
    "        return reviews, labels\n",
    "\n",
    "    # 加载正面和负面评论\n",
    "    train_pos_reviews, train_pos_labels = load_reviews(train_pos_path, 1)\n",
    "    train_neg_reviews, train_neg_labels = load_reviews(train_neg_path, 0)\n",
    "    test_pos_reviews, test_pos_labels = load_reviews(test_pos_path, 1)\n",
    "    test_neg_reviews, test_neg_labels = load_reviews(test_neg_path, 0)\n",
    "\n",
    "    # 合并数据\n",
    "    train_reviews = train_pos_reviews + train_neg_reviews\n",
    "    train_labels = train_pos_labels + train_neg_labels\n",
    "    test_reviews = test_pos_reviews + test_neg_reviews\n",
    "    test_labels = test_pos_labels + test_neg_labels\n",
    "\n",
    "    return train_reviews, train_labels, test_reviews, test_labels\n",
    "\n",
    "\n",
    "# 加载数据\n",
    "data_path = r\"./data/aclImdb\"\n",
    "train_reviews, train_labels, test_reviews, test_labels = load_imdb_data(data_path)\n",
    "\n",
    "print(f\"数据加载完成！\")\n",
    "print(f\"训练集样本数: {len(train_reviews)}\")\n",
    "print(f\"测试集样本数: {len(test_reviews)}\")\n",
    "print(f\"训练集正负样本比例: {sum(train_labels)/len(train_labels):.2f}\")\n",
    "print(f\"测试集正负样本比例: {sum(test_labels)/len(test_labels):.2f}\")\n",
    "print(f\"\\n样本评论预览: {train_reviews[0][:200]}...\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ca4866f",
   "metadata": {},
   "source": [
    "# 2. 数据预处理\n",
    "\n",
    "## 2.1 文本预处理函数定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "fa843bd0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "开始文本预处理...\n",
      "预处理完成！\n",
      "原始评论长度示例: 140\n",
      "预处理后长度示例: 69\n",
      "预处理后词汇示例: ['bromwell', 'high', 'cartoon', 'comedy', 'ran', 'time', 'programs', 'school', 'life', 'teachers', 'years', 'teaching', 'profession', 'lead', 'believe', 'bromwell', 'high', 'satire', 'much', 'closer']\n"
     ]
    }
   ],
   "source": [
    "# 获取英文停用词\n",
    "stop_words = set(stopwords.words(\"english\"))\n",
    "\n",
    "\n",
    "def preprocess_text(text):\n",
    "    \"\"\"\n",
    "    文本预处理函数\n",
    "\n",
    "    Args:\n",
    "        text (str): 原始文本\n",
    "\n",
    "    Returns:\n",
    "        list: 预处理后的词汇列表\n",
    "    \"\"\"\n",
    "    # 转换为小写\n",
    "    text = text.lower()\n",
    "\n",
    "    # 分词\n",
    "    tokens = word_tokenize(text)\n",
    "\n",
    "    # 去除停用词和标点符号，只保留字母\n",
    "    tokens = [token for token in tokens if token.isalpha() and token not in stop_words]\n",
    "\n",
    "    return tokens\n",
    "\n",
    "\n",
    "# 应用预处理\n",
    "print(\"开始文本预处理...\")\n",
    "train_tokens = [preprocess_text(review) for review in train_reviews]\n",
    "test_tokens = [preprocess_text(review) for review in test_reviews]\n",
    "\n",
    "print(f\"预处理完成！\")\n",
    "print(f\"原始评论长度示例: {len(train_reviews[0].split())}\")\n",
    "print(f\"预处理后长度示例: {len(train_tokens[0])}\")\n",
    "print(f\"预处理后词汇示例: {train_tokens[0][:20]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b0bf210",
   "metadata": {},
   "source": [
    "## 2.2 数据统计分析与可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d4f5d7f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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pauuuiqfUyoTunLlyvy4chIxZvR17969vA5grBf47LPP5qRhiLKfsR/ntWrVqtbuV+IPAAAAAACAwnvqqaeqLddZcscdd6Tnn38+jRs3Lq/zN3ny5Jyoi2ReJO6WLFmStt122/T222/nEqKnnnpq+doo6xltO+ywQ97/2te+li677LK0xx575P24fsWKFally5a1eo8SfwAAAAAAABTWpEmTcvJus802S9tss02157z44otp4MCBOXEXW8zomzNnTjrttNNyudCYpRezAGPW3oIFC1Lnzp3zdZEojPUEmzVrVuX54rxINMZrlkS5z0gQlsqB1gaJPwAAAAAAAAqnoqIi3XLLLekvf/lL2nPPPdPRRx9dbnv33XernBuJvFGjRqUePXqkXr165WOR/DvzzDPTK6+8km688cZ87J577skz/WbMmJHLhnbp0iX985//zG3z58/PM/3ite677750+umnp9GjR6fPfe5z+Xnat29f6/fcuNZfAQAAAAAAAOrY/Pnzc3nOSy65JI0ZMyZ9+9vfzsffe++98tp7sV5f7EeScJ999kmzZ89OX/rSl/Ksv8svvzzde++96Re/+EVuD4ceemjq06dP+s53vpP3X3vttdx+2GGH5esHDRqURowYkc+PGYKRdIy1AGPGYawheMUVV9TqPZvxBwAAAAAAQOE0atQo3XDDDemFF17IJTu7deuWjzdp0iRNmTIlP45196IEZ8zoi3Oi3Oe5556bZwSedNJJaerUqblkZ6z3V5qxF7P4evfunf773//mNfvuvvvudOSRR6Zbb721vIZfJBSXLl2aWrRokS688MI0bNiwdNttt9X6rD+Jv41Vv34b+h3Axm/y5FQE/Sb6vMP6TB5QjM87GwExFjSI+CqIsWD9xFjUx1CtQH+qAOq1+vL7+IYbbljvOZ/97GfTww8/nNfxO+aYY3L5zrBq1ar04IMPpk984hNp4cKFOUF400035bYtt9wyPf300+V1/e644441nveJJ56osh9rBH7lK19JtU3iDwAAAAAAgAZts802q7LfuHHjnPQLsWZfbJWVkn4bG2v8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABQGG+++eb7Ou+VV15J06dPX+95q1atWu851113XXriiSfy4/j6wx/+MG0ITTfIqwIAAAAAAEAtOOaYY9I222yTrrrqqjR27Nj0+uuvl9s+8YlPpK9+9av58cMPP5x+8pOfpIceeig9+eSTaauttkof+9jH1ni+wYMHpy5duqStt946vfrqq+nMM8+s0h7Hvv/976c///nPeT9ee+LEial///5pt912S3XJjD8AAAAAAAAK48Ybb0xPP/10+sMf/pCuvvrq1Lx589SxY8e0ePHi9Jvf/Ca3/frXv87Hmzb93zlykag77LDD0vLly9d4vmbNmqWVK1em/fbbL40cOTL98Y9/rNJ+1lln5VmGJ598cvrMZz6TDjzwwNS4ceOcYIz9T3/60+mTn/xk+tvf/lbr927GHwAAAAAAAO9fv351+3qTJ3+g07fccst03333pSZNmqQf//jH6bjjjkt//etf00EHHZRmzZqVXnjhhTRhwoQ0bNiw8jUjRozICcE777wzHXHEETnZF8m70KJFi/y1a9eu6Y477sjJvJJbbrkljRs3Lo0fPz6dcMIJ+diYMWNycjASj6GioiJvpeerTRJ/AAAAAAAAFMJrr72WLrzwwjwzr2XLlvlYJNwiKXfrrbeW9xs1alTlutj/7W9/mxN0kTjcdNNNc+IwLFmyJL377rs5wRfr/R111FHp5z//eZo/f376xje+kXbcccd04oknppNOOqlKoq80m/C9995Lt912W/rCF75Q6/cv8QcAAAAAAEAhbLLJJumZZ55JBxxwQLr77rvzsUjgxda6detqr4mkXMwAjLUAo0zoK6+8UqX9V7/6VXrkkUdyedDKYubgt771rbRgwYJ03nnnrXXGX5QBXT3RWFus8QcAAAAAAEAhbL755jnhdvTRR6dWrVrlYzH7LhKCpRl8q4tzJ02alBOGMTvvwQcfzLMF27Rpk2f+xQzBF198cY3rYs2/Sy65JD/+wQ9+kHbZZZe8XXTRRen+++8v7/fu3TtdddVVqcEm/iKTGnVSn3vuufKx22+/PW233XZ5WmR8k5566qly2+zZs/M3rV27drkea/wAS6ZOnZq6d++eOnTokC677LIqrxM/xC5duqROnTrlRRsBAIpMjAUAAAA0BE2bNk0DBgzISbzYFi1alLbYYovcFvvrEmv7ffazn02LFy/OM/Xi6/7775/7SdZm2bJluZ8kzostSn9Gn0lp/5BDDknPPvtsPq/BJf6iQ+rII4+s0iEVGdaTTz45L8AY0yV32GGHNGjQoNy2YsWK1K9fv9SrV6/0+OOPpzlz5uQaqyF+kP37988/3GnTpuVpmpFhDfEDGjhwYBo+fHi666670vnnn5/mzZu3ge4aAKB2ibEAAACAhuSMM85II0aMSG+99Vbu14gByuHtt9/O6/StKwEYM/xihmApEfjJT34yr/H3z3/+s9rzo5/k3HPPTd///vfzFtfGQOnSfmxnn312ec3BBpX4O/7449OXv/zlKsdi5Hl0SH3pS1/KCypGvdQZM2bktjvvvDNnW+MbuP322+cf4tixY3NbdELFDzI6nrp165Y7nkptUV816rtG59ZOO+2UTjvttDR+/PgNcMcAALVPjAUAAAA0FC+88EL685//nPsnYtDyE088kfbee+/08Y9/PK/7F0m8d955p9prY8BzJA1XF9dPmTIlPy4lDZ9//vk8kHrUqFFpyJAh6eCDD87bAw88kL7zne+U92PG3+c+97n0ve99r+El/q677rp0+umnVzkWo9NPOeWU8n6MGo9OpjBz5szUt2/fcpa0Z8+eOXNbaouOp9KCiX369EnTp08vtx144IHl56zcBgBQNGIsAAAAoKG46KKLcpWjbbbZJpf9vP766/MSJ1HCM6oVRRLu4YcfXuO6mAl42GGH5a+R1ItlT0488cR0ww03pJNOOil/Xbp0aTriiCPyTMJY6iRmAcZzTp48OX3sYx/Ls/+iHyXW/ov1AY866qi8ZmCc99Of/rThJf5i3Zl1iQzsz372szR48OC8v2TJkirXRAdULM74+uuvr9HWunXrtHDhwmqvq9xWnSh3FddU3gAA6gsxFgAAANAQ3HfffenGG29MZ511Vt4/88wzc8IvEniXXnpprooUybuVK1eml156qTywOWYJRh/G0KFDU+fOnXPy7oQTTsiJwFgOJbb//Oc/6bvf/W7661//mpo3b55ee+219Itf/CKfs88+++QZhlE1KRKGHTt2TH/5y19y4vFTn/pUnvl3xRVX1Pr9N031zAUXXJA222yz8voz8Q2Lb25lLVq0SMuXL1+jrXS8uusqt1Vn5MiR6cILL6yFOwIA2PDEWAAAAEAR7Lrrrmn06NFp2223zWU+77nnnpyoC9HvERWPoq/iN7/5Ta6OdPHFF+e2SPbdcccd6fDDD8+z+U499dTcr1FZLHUSFZS++tWv5nUA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HdOiRYuqtC1dujQ1a9YstW/fvkpb6XhYV1t1zjnnnLyWYGl78cUXa+W+AICNj8QfAAAAANSgYcOGpZtuuqm8P23atNS4ceO000475ccl8+fPz2U5I7HXu3fvKm0zZsxIW2+9dX68rrbqxOzAKAdaeQMAGgaJPwAAAACoQTvvvHM677zz0r333pvuvvvuNHjw4PTVr341fe5zn8vr7V1//fX5vBEjRqSDDz44r/PXv3//9PDDD6cpU6aklStXplGjRqVDDz00n3fsscemm2++Oc2aNSstW7YsXXnlleU2AIDKmlbZAwAAAAA+khNOOCH94x//yAm7SOrFfiT5Yq2+MWPGpAEDBuRZgTEL8IEHHsjXdOjQIY0ePTodfvjhqVWrVqlt27Zp3Lhx5UTi0KFD0+67757X94t1A4cMGbKB7xIA2BhJ/AEAAABADRs5cmTeVhcz+5555pk0ffr01Ldv37TFFluU22JmYMzkmzt3btpnn31yArDkkksuSQMHDkwLFixI++233zrX+AMAGi6JPwAAAACoQx07dkxHHHFEtW1du3bNW3V69OiRNwCAtbHGHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUQL1K/I0ZMyZ17tw5tWzZMu2///7p2Wefzcdnz56devfundq1a5eGDRuWKioqytdMnTo1de/ePXXo0CFddtllVZ5v0qRJqUuXLqlTp05p4sSJdX4/AAAbAzEWAAAAQDHUm8TfM888ky666KJ0++23p7lz56btt98+nXTSSWnFihWpX79+qVevXunxxx9Pc+bMSePGjcvXLFq0KPXv3z8NGDAgTZs2LU2YMCHdf//95Y6sgQMHpuHDh6e77rornX/++WnevHkb+C4BAOqWGAsAAACgOOpN4m/GjBmpb9++abfddkuf+MQn0te+9rX09NNPpzvvvDMtXrw4jzSPjqoRI0aksWPH5muiEypGmkfHU7du3XLHU6ktRrYfcMABadCgQWmnnXZKp512Who/fvwGvksAgLolxgIAAAAojnqT+OvRo0e677770t///vfcCXX11VenQw45JM2cOTN3VkVpqtCzZ888Ij1EW3Q8NWrUKO/36dMnTZ8+vdx24IEHlp+/clt1YtT7kiVLqmwAAPWdGAsAAACgOOpV4u+4445Lu+66a2rb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1lvTnnvumYOUWBD54IMPTmeffbZOKQCA90l8BQBQf+OvmBUYSb5I3pWSgJFMHD58eOrWrVs6//zz09ixY3PbmDFjcgJw0KBBaaeddkqnnXZaGj9+fG775S9/mU488cR01FFH5SRkfL3ttttq+TsBADTYGX8x6mj77bdPn/zkJ1OrVq3S4MGDy20xOurLX/5yGjp0aA5evv/979fESwIAFJr4CgCg/sdfkfQ7+uij01tvvZX3Z86cma9v1KhR3u/Tp0/5uaKt8tqB0XbRRReV2+L1K7c9+OCDOUlYnRUrVuStZMmSJR/wuwEANOgZf9dee23q1atXrkH+xhtvpF//+tfpBz/4Qdp///1zaYIIRubPn5+aNWuWRo0aVRMvCQBQaOIrAID6HX/df//96d57761ybiTgunbtWt5v3bp1Wrhw4Udqq87IkSNTmzZtylvnzp0/xHcEAGiwM/6i5MGqVavSAw88kH7/+9/n4OK5555L3/ve9/Kxkptuuin17Nkz9evXLy9iDABA9cRXAAD1N/56++230ze/+c1conPzzTcvH2/atGlq3rx5eb9Fixa5nOhHaavOOeeck84444zyfiQOJf8AoGGokcTfJZdckioqKvLiwlFGYMaMGenUU0/NI6CiHvlXv/rV1Lt37/SVr3wllzj461//qmMKAGAdxFcAAPU3/rr44ovzuUcccUSV4+3bt0+LFi0q7y9dujQ//0dpq04kCSsnCgGAhqNGEn8nn3xyXoD4qaeeykHHF7/4xXTIIYfkkUVRTiACoQictttuu/Sd73ynJl4SAKDQxFcAAPU3/opZgZGoa9u2bd6P2Xm/+93v8uO99tqrfF4kF7feeuv8OBKF06ZNS1//+tfX2nbQQQet0QYAUONr/P30pz/NAUzUFv/b3/6WR0a98sor6c0330xbbLFFeuKJJ3JQFAsRx3EAANZNfAUAUH/jr7/85S9p9uzZ6e9//3ve+vfvny666KL0wgsvpIcffjhNmTIlrVy5Mq//d+ihh+Zrjj322HTzzTenWbNmpWXLlqUrr7yy3Hbcccelq6++Oi1YsCD95z//SWPHji23AQDUeOKvXbt2eQRTq1at8oij119/PQdEu+yySy498Oyzz6Z///vfaejQoUakAwC8D+IrAID6G39ts802adttty1v8ZwdOnTI2+jRo9Phhx+ettxyyzRv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FIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAADUgjfeeCM9+uij6fXXX9/QbwUAaCAk/gAAAACghv3+979P2267bRo0aFDaZptt8n6YPXt26t27d2rXrl0aNmxYqqioKF8zderU1L1799ShQ4d02WWXVXm+SZMmpS5duqROnTqliRMn1vn9AAD1g8QfAAAAANSgxYsXpyFDhqQHH3wwzZo1K1111VU5ybdixYrUr1+/1KtXr/T444+nOXPmpHHjxuVrFi1alPr3758GDBiQpk2bliZMmJDuv//+crJw4MCBafjw4emuu+5K559/fpo3b94GvksAYGMk8QcAAAAANWjJkiXp8ssvTz179sz7u+22W3r11VfTnXfemZOCMZtv++23TyNGjEhjx47N50SiL2bzRXKvW7duOblXahszZkw64IAD8uzBnXbaKZ122mlp/PjxG/QeAYCNk8QfAAAAANSgzp075xl6YeXKlWn06NHp6KOPTjNnzkx9+/ZNLVu2zG2RGIxZfyHaIrnXqFGjvN+nT580ffr0ctuBBx5Yfv7KbQAAlTWtsgcAAAAA1IhSwq5Zs2bpqaeeShdffHHq2rVruT2SfE2aNEmvv/56niXYo0ePclvr1q3TwoUL8+Noq3xd5bbqREnR2EriegCgYTDjDwAAAABqQczou/vuu3PpzijT2bRp09S8efMq57Ro0SItX758jbbS8bCutuqMHDkytWnTprzFDEQAoGGQ+AMAAACAWhAz+nr16pVuuOGGdOutt6b27dunRYsWVTln6dKleUbg6m2l42FdbdU555xz8lqCpe3FF1+slfsDADY+Sn0CAAAAQA2aOnVq+uMf/5h+8pOf5P1I0kUSsHv37um6664rnzd//vxckjMSe71790433XRTuW3GjBlp6623zo+jbdq0aenrX//6Gm3VidmBq88sLJLhj/Vba9vFfSbX6XsBgI2NGX8AAAAAUIN22GGH9Ktf/SpvMdvu3HPPTZ/73OfS4Ycfntfbu/766/N5I0aMSAcffHBe569///7p4YcfTlOmTEkrV65Mo0aNSoceemg+79hjj00333xzmjVrVlq2bFm68sory20AAJVJ/AEAAABADdpqq63SpEmT0hVXXJE+/elP5/X4brzxxrxW35gxY9Jpp52WOnTokG6//fZ06aWX5mtif/To0Tk5uOWWW6Z58+al8847L7ftvPPOaejQoWn33XfPM/0iUThkyJANfJcAwMZIqU8AAAAAqGGHHHJI+sc//rHG8ZjZ98wzz6Tp06envn37pi222KLcNnjw4DyTb+7cuWmfffZJrVq1KrddcsklaeDAgWnBggVpv/32W+cafwBAwyXxBwAAAAB1qGPHjumII46otq1r1655q06PHj3yBgCwNkp9AgAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEAB1NvE32GHHZbGjRuXH0+dOjV17949dejQIV122WVVzps0aVLq0qVL6tSpU5o4cWKVtquuuiptueWWabvttkv33Xdfnb5/AICNkRgLAAAAoP6ql4m/CRMmpLvuuis/XrRoUerfv38aMGBAmjZtWm67//77c9vs2bPTwIED0/Dhw/P5559/fpo3b15ui/2zzjor/epXv0q/+c1v0qBBg9Krr766Qe8LAGBDEmMBAAAA1G/1LvH32muvpTPPPDPtuOOOeT86oWKkeXQ8devWLXc8jR07NreNGTMmHXDAAbnDaaeddkqnnXZaGj9+fG775S9/mU488cR01FFHpb322it/ve222zbovQEAbChiLAAAAID6r94l/qJD6uijj059+/bN+zNnzswdT40aNcr7ffr0SdOnTy+3HXjggeVr329bdVasWJGWLFlSZQMAKAoxFgAAAED9V68Sf1Fe6t57702jRo0qH4vOoa5du5b3W7dunRYuXPiR2qozcuTI1KZNm/LWuXPnGr8/AIANQYwFAAAAUAz1JvH39ttvp29+85u5fNTmm29e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xgIAgKr69Vv/OZMn18U7AYCCzvibP39+GjBgQO6U6tGjRz7Wu3fvNG3atCrnRMmo6HRavW3GjBlp6623rva6ym3ViZHrUaqq8gYAUARiLAAAAIBiqDeJv7feeisdeeSR6aijjkpHH310WrZsWd722WefPDL8+uuvz+eNGDEiHXzwwXkNmv79+6eHH344TZkyJa1cuTKNGjUqHXroofm8Y489Nt18881p1qxZ+XmuvPLKchsAQEMhxgIAAAAojnpT6vPuu+9Oc+bMydt1111XZfT5mDFj8ij1YcOGpcaNG6cHHnggt3Xo0CGNHj06HX744alVq1apbdu2ady4cblt5513TkOHDk277757XnumW7duaciQIRvs/gAANgQxFgAAAEBx1JvEX4xCr6ioqLZt2223Tc8880yaPn166tu3b9piiy3KbYMHD86jzOfOnZtHrkfnVMkll1ySBg4cmBYsWJD222+/da4/AwBQRGIsAAD4X8MfW/uifhf3sZgfAPVDvUn8rU/Hjh3TEUccUW1b165d81adWMemtJYNAABVibEAAAAA6o96s8YfAAAAANQnr7zySh4o9dxzz5WPzZ49O/Xu3Tu1a9cul1SvXH1h6tSpqXv37rm0+mWXXVbluSZNmpS6dOmSOnXqlCZOnFin9wEA1B8SfwAAAABQC0m/I488skrSb8WKFalfv36pV69e6fHHH8/rLJfWSl60aFHq379/XmN52rRpacKECen+++8vJwujlPrw4cPTXXfdlc4///w0b968DXZvAMDGS+IPAAAAAGrY8ccfn7785S9XOXbnnXemxYsX59l822+/fRoxYkQaO3ZsbotEX8zmi+Ret27dcnKv1DZmzJh0wAEHpEGDBqWddtopnXbaaWn8+PEb5L4AgI2bxB8AAAAA1LDrrrsunX766VWOzZw5M/Xt2ze1bNky7/fs2TPP+iu1RXKvUaNGeb9Pnz5p+vTp5bYDDzyw/DyV2wAAKmtaZQ8AAAAA+Mhibb/VLVmypMrxSPI1adIkvf7667mtR48e5bbWrVunhQsXVntd5bbqREnR2Cq/LgDQMJjxBwAAAAB1oGnTpql58+ZVjrVo0SItX758jbbS8equq9xWnZEjR6Y2bdqUt86dO9fK/QAAGx+JPwAAAACoA+3bt0+LFi2qcmzp0qWpWbNma7SVjld3XeW26pxzzjl5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n3coZozV0D/b7t/9u3/37/7d/8aoUUWsCNjAvfzyy2n69Ompb9++eZFjAAA+OjEWAEDNE2MBAOsi8QcAAAAAAAAF0KDX+IOSVatWpRtuuCG9/fbbaz3nvffeW2f76s/3fs8FNj4+7wAfnfgKWJ3PPAAA1D4z/iCl9POf/zyNHj06l8po165dtef89a9/TYccckjadNNNq/yP6+LFi1P79u3X+J/U3XffPd199921/t6B9Vu5cmV6880385oY6/LOO++kVq1apccff9znHeAjEl9B8YmxAABg42PGHw3ezJkz0/e///302muvpV133TVtu+22eevatWt64oknyufttdde+X9qX3nllfL261//Ou2zzz5VjsUWz+V/UGHj8eCDD6ZOnTqlbbbZprxtueWWqW3btlWOxXbPPff4vAN8ROIraBjEWNCwzZ49O/Xu3TsP8Bk2bFgq4tyC22+/PW233XZ5gMMuu+ySnnrqqfXe+9SpU1P37t1Thw4d0mWXXZaK4LDDDkvjxo1b7/1NmjQpdenSJf9tmDhxYiqKs88+O/Xr16+831B+/mPGjEmdO3dOLVu2TPvvv3969tlnC3//EYPE/7M899xz5WMf9n7r4+ehuvtf2+/BIv5beKWa+1/b78KN/ecv8UeD9s9//jP/4Y4P5htvvJE/1LF98YtfzKNLd9ttt3Vef9ddd6Wjjz66zt4v8OEcdNBBafny5flzXtqi/NxnP/vZKsfinCOOOKLa5/B5B3h/xFfQcIixoOFasWJF/nvfq1evPJt3zpw5VTpDi+CZZ55JJ598cvrxj3+cFixYkHbYYYc0aNCgdd77okWLUv/+/dOAAQPStGnT0oQJE9L999+f6rO4h/hdvb77iwTAwIED0/Dhw/P5559/fpo3b16q75588sl09dVXpyuuuCLvN5Sff/z7v+iii3LSZ+7cuWn77bdPJ510UqHvP5I+Rx55ZJWkz4e93/r4eaju/tf2ezAU7d/CK9Xc/9p+F9aLn3+U+oSG6JZbbqlo3759xc9+9rMqx//1r39VtGnTpuL5559f45p77723okuXLuWtefPmFVtuuWWVY7EddthhdXgnwIfx+9//vmK//fZba7vPO8AHJ74CxFjQMNx2220V7dq1q3jzzTfz/t///veKvffeu6JIJk+eXHHttdeW9++7776KTTfddJ33Pnr06IpP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S/u9995Ln/70p/Nn3Ocd4IMRX0HDIsYCSn/bp0+fntdC22KLLVJDsq57j5J3c+fOzbOmWrVqlYpmXfcXs+QWLFiQ9ttvv3q5ptf71ZB//g3x/j/s/TaEz0ND+7ewuo315y/xR4MVi5LGBy4WqS0tSlqdqN8dH9C99tqrTt8fAEB9I74CAACADUviDwAAAAAAAAqg8YZ+AwAAAAAAAMBHJ/EHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAALVgxYoVaejQoflrWLlyZaqoqNjQbwsosEYVfssAAAAAAECt+OxnP5v69++fvve976WBAwemBx98MDVp0qTKOe+++25688030+uvv55uueWW9N///jd961vfWutzRrf+O++8k5+nadOm+dioUaPSoEGD0i9+8Yv02muvpWHDhqXrr78+nXfeeenoo49Op5xySvr85z9f7fPtv//+6Y033kht27Zdo+3tt99OCxcuTC+88MJH/l4Atc+MPwAAAAAAqCWR8Lvpppvy4wkTJqQXX3wxPffcc1W2hx56KDVr1iyfs91226UrrrgifeELX0jLli1LO++8c2rVqlVOypW2Nm3a5K30vKFx48Y58ReJwHiuMWPGpFWrVqX33nsv3Xvvvfl516Z58+b5vEhArr7F8U033bQOvlNATfjfoQAAAAAAAECNO/LII3PyrjR7LpJykaQrzdxbvnx5ftyoUaP8ddddd02PPPJITv61bNkybbLJJumPf/xjnpW3NjHD7xOf+ERO1M2bNy8nDLfaaqvUvXv39MADD+Qk4Y477pjPjURebKVEY+lYzDDcbbfd1njul156KZ111lk1/F0BaovEHwAAAAAA1LBYz69UjnPrrbfOx77xjW+kqVOnVkn8dezYMf32t78tX/fyyy/nYxdccEHeL5XyXJfF/x979wFmVXUujnuBIIgKoiiJ0hE7WBAlttixgYkFJRrFGwuxJpYoNzaMit0YawxGLARFogKxG8tVorEEQexdFK+iIkUUC/N/vnX/Z34z4wwdZtjzvs+zL2fvtds5JOG761vrW9OmpXvvvTd98MEHeXbfJptsklZdddX073//O40fPz7NmDEjdejQIZcT/eqrr/IsxDPPPLP8+ihB+t5776X777+/2vsfc8wxi/x7AEuHNf4AAAAAAGAxe+6559KFF16YXnnllbTzzjunP/7xjzWeG+U+e/bsmZOCkbQ76qij0qBBg/JMvTh+wQUXzHXGX5g4cWLaf//9c0nPSPrFOoEjR47MMwhPO+20XAb02muvTS+99FJeBzAcd9xxaezYsbl8aMwurEnMJIxZhT/96U/TxRdfvAi/CrCkmfEHAAAAAACL2eabb57uuOOOdPbZZ+eZdqXZfO3bt09dunTJ+2+88UaaPXt2+TVRjjPW+4uym5Gc+/3vfz9fz3r44YfTkUcemW655Zb01FNPpU8//TSXF42Zeu+8805666238nmTJ09Oa665Zvl1V155Zf7zxhtvzLMGaxJlSE844YSF/CWApUniDwAAAAAAlqAo9xmaNGmS2rZtm2fnhVatWv3g3O7du+c1/mKW3fyK2YDPPPNMXi/w0EMPTePGjUsrr7xyTjpGWc+Y1Rfefvvt9POf//wH18eMwkgcdu7cOe8fcsgh6frrr09NmzbNZUKjTeIPlg0SfwAAAAAAsBTEzLn5EWsAXnHFFeknP/nJfJ0fMwtPOumkNH369Jxc7Nq1ay7NefDBB6err746r+/38ccf5wRgdaU643lDhw5NK664Yt6PdQAvu+yyfDwSkKU1CYG6T+IPAAAAAACWsGHDhuXyn++9915OxIWYTVedDz/8MK8P+K9//Wu+7t2vX7+03377pY022ijdc889ae21185rBf7yl7/MycZo/8UvfpHX8qtY6rMk1hFs2bJl+Tp/EyZMSDvssENq3LhxTvy1bt16kb47sPRI/AEAAAAAwBJSVlaW7r///jRy5Mic/Is1/t58883cFuU4o73q+UcccUT6zW9+k9ZZZ535fs7LL7+cVl999Zzga9OmTb7PFltskdsGDBiQE4l//OMff3BdlBUdP358Wn755cuPffvtt+nRRx8tn+n3zTff5NmCW2+99UL/DsDS0aCs6v+qAAAAAAAAi0Xv3r3zmntPPvlkWmuttdJrr72WZ+ZV9J///CfttddeafLkyem8885Lf/vb3/I1kYzr0aNHOuecc9K2225bfn5060cyLmbzrbrqqpXu9ac//Skn+DbeeOM0e/bsdOutt+ZkYHx+/fXX0z//+c+03nrrlZ8fZT1nzpyZ1xsslSKNz++++25aaaWV8rNi7cB4l5gBCNRtZvwBAAAAAMAS0rZt23TuueeWl/esmvSL2X133nln2mOPPXLiL9bge+ihh8pn4MWafVGqs6oowbnlllvmRN6nn36aZxPecssteZZgzOKL5F2sE9itW7d0zDHHpIEDB6bBgwfna/7yl7+kvn37pnvvvTedeeaZqUWLFpXWH4zPffr0qbS2X6wfGO8aG1B3mfEHAAAAAAC1JGb7RWnNKMsZCbePP/54gdfUiyTgRRddlH7+85+n9ddfv/x4JPi22mqrtOGGG5Yfi2RfPCsSg0DxSPwBAAAAAABAAfy/eboAAAAAAADAMkviDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAIAloqysrLZfAQCgUMRXwLxI/AHMh6eeeirts88+6Z133lmg6x566KH07LPPLvDzvvnmm7THHnuk5557rvzYrFmz0pw5cxboHgAAC9tBdO+996bf/e53+fP333+fvvzyy/zngtzriCOOSGeddValY1999VW194h7f/fddzXe68Ybb0zXX399Pm9+jRkzJv3yl7+sFB99++23C/QdxFQAwOeff57efPPN8v2IJT744IPy/Ysuuig1bdo0992E6L95/fXXf3Af8dX/uwZYciT+ACr4+OOPc2D27rvvVtpmzJiR7rrrrnTbbbf9oO2tt95Kr732WrX3u/LKK/N1Jaeddlo6/vjj08knn1xpO+aYY9Itt9xSft7yyy+fmjVrlo4++ujywGnFFVdMyy23XGrQoEGNW8WgslevXunwww9PM2fOzPvTpk1Lr776arXbiy++mJ5//vn8PQGAuqFfv36pZcuWae21165xi3//H3zwwR9cG50/MfjoiiuuSDvvvHOOKaJD5osvvqh2q65DKGKEBx54IH+OWGGllVZKjRo1Sg0bNqwUf8Q7Vieed/fdd6dWrVpVOh4xTtV7xBb3HjJkSI2/R7QNHTo0x0Pzq127dulvf/tb+sc//pH3zz///BxnVff80vaLX/yi/Pp//vOf+Xd++OGHy49F7FddPPXyyy+nF154IX8GAIoVXw0YMCBtscUW6bHHHsv7J510Ut7/9NNP837EJ7Nnz06NGzfO+zfddFPacMMN06OPPlrpPuIr8RUsDY2WylOAZVoENTvssEO1bTHC6Oyzz16q7xPJqQiurr322rT99ttXajv00EPTzTffXOnYQQcdlG699db5uvfVV19dPkqrqhYtWqQLL7wwbxXFqKgIuEqzASMo6datW5o8eXIO+KL9s88+y3+2bds2j2qKoOe3v/1tOv300/O10dlWNWi74IIL0vrrr5/+9a9/pa233jqPJIv3qi4Ye//999PGG29c6b3j7yVGYPXo0SMnH6PzL36fVVddtdK1kViM4DS2CLp++tOfztdvBQAsWdGB86tf/SpdcsklNZ4TMcUKK6xQKW6L2Oejjz7KnS8dOnRI/fv3T1tttVW6884704EHHljtfe65555cbaCi6MApdV6tu+66ucPlT3/6Ux7xPnjw4PJBTf/7v/9b7T2jM2jq1Kmpb9++ORZZb731cmzz5JNP5veKQU1x7JxzzsnnxCCleOfqTJkyJf373//OnUwLIuKjiIfivffaa6904okn5gFX0QkWv11VkSCtGE/95Cc/SXvuuWceUPX73/8+v+uuu+6aB4tVjRcjnot4Kq555JFHFug9AYC6G1+FG264IccSu+++e463IqaI5F7M3vvrX/9a3lcTf0b8c8YZZ+SYrGp/mvhKfAVLg8QfME/du3cvL1c5aNCgPKts2LBheX/NNddcqu8SSbODDz64xpE+MWst3rFix9Vqq6023/ePYCO2RRFBXCT5mjRpkgOeGGl/zTXXpPbt26eJEyfmc9577710yimn5EAwzq9OjH4aP3582mCDDfJ+BDpxv4oBWzwngsrmzZvn/YptkcCLv7fjjjsu/wYRtEbSrzQaDQCo2+Lf/auuumquo7RL55Vss802OYnXsWPH9Ic//CH/ux8DjcKoUaNyPBIVCyqKTpqKnSyvvPJKHk0enS9ff/11jl8iDtlkk01y3BIj0KNjKUyaNCkPMqrOH//4x7TZZpul1q1b5wFJ0SEUHVMxoClEp1U8I/ZXWWWVvFV01FFH5dJTFR1wwAF5q8nee++dR8FXFKPQo5Ov1HkU36nU4VYSx3784x+Xj1YvietisNmmm25aXrorYqoYoHXsscfW+B4AQHHiq7DyyivnEpeRnIv4JmKJGAwfSbOIk0rxQ/wZx6I9qkCViK/EV7A0SfwB8xTBzeabb54/lxJIpf2lKQKGGEk0ffr0atujpFUkBGP01eJ4v/ie8cy5iRKf66yzTqVjpVFepaAmRmqVZkVGABadbvGeEdRVHFW12267pR/96EeV7lVK+oXOnTvnIKpisBQ142OU1OWXX17t+0UgOGLEiPJOPQBg2RGxTczU69OnT43nRAWBivFKdLxE50/FjpeY3R8dTTWN9g4V26JUeAw+igFXEWvEO8S7xKjwWIcmRpKXRKdVrDNT1dNPP53+53/+p7ySQMQhpXeKZGR0Hr399tu5Uy1GqMd6yvE5RuCXxCCq6PSqWs2hJieccEK1VRsqDlSLkemREK36+8TvFgPIanLkkUeWfxZTAUD9iq8iHoo4JQZdl2blhUi6xWDrUjnLisej4lKU8SwRX/2Q+AqWHP+NApYZUeYgEo9RyqA0w62iqPkdSbeuXbsuludF4m/48OHpZz/72Q/aYi2cSNxVDX5KHWuhYtAXxyO4i1FXhx12WNpnn33SjjvumO6///7cfscdd6THH388J/4iWIoZgvFdVl999TRu3Ljy2X3VddhFwBilPiuKtQife+659N///d8/KO0JANRt0UkSnR/nnXdejjnmJuKETp06lY80/81vfpP+/Oc/VzonylCFv/zlL/P1/LFjx5aXcYoOnIgpSqJjqlSePOKPGJAVz4/3jLLopfgnBj6VRoGHOB4juqMEaZRAj86s3r1755jooYceyoOjoiOrYsdUac3jKFc1v4PVSp1GETdFHFV6h+iki5JUZ555ZrVl6ktrKldXaSI66qL8FABQP+OrSGzFoOpYHqY00Dz6d6oO3q7aFxQVtEpxlPjq/4ivYOmQ+AMWm3vvvTcHITELLgKIWAsvZrGFCABGjhyZR1RFUisSd1FeYODAgTmIiuRVbNWJQCaSYLF48O23317j8//zn//kRFzPnj3zO6y11lp5lFWM1FoYkcCLQKS6MgOl4CWCwIoi8Isa7aEUnMWIq0jmxfcbPXp0eW34iuUW4pxSEnGnnXbKwWPUWS8lBkNNo/SrOx7vfsstt+SOvksvvTQdcsghC/UbAABLX5T7jk6fuc3QqyhijIhNbrzxxrxOyvHHH587lGI0984775xjsuhkifhofkVM8+KLL+ZSUnHvUodTjCaPigKhVMI8Rp3H6PHopIrOpCg1GuXGYz2XUrn4EDFVbKV4KNbDiQ6p6Oh666230nbbbVfj+0RHU6zzXJ2qJaxC/HZRvj1Gz0d59VLMVtNvWt16NPFu8bvF+jNR4ipKUkW5KgCgfsVX0ZcVZT633HLLvGRL9HFF7BNuvfXWfLyqGIg9efLkSsfEV+IrWFrm73/pAOYhFtiNUUVRqiASgLHobpTljAWPS15++eV8XoySig6pCJSirnr4r//6r9xBVd0WibAwr+DsmWeeycFQJOtiseOf//zneYHhSLItjBhZFbMMYx2cqlus0RfJtS5dulS6JgK1CGAieIotap5H+YT4HKPLNtpoo/JzY5HlmP1XVfyGMUor1uipuP7fww8/XF4+orTFd61OjLh644038t9B1dmAAEDdFp05sQ5MiPghthgVHh0wpf2KW8Qk0Wnzi1/8IrVt2zaXCo+1YaZNm5ZLTEUHS5T/rGmQVShVLCiJwVbRIfX555+nLbbYIpeKCh988EEeWBTPizWV45xY3ybOKcUtEbtFOfNYT7Ci6DiLslmxnktJxIMDBgyYZ6wX3z+qLVS3ldaGqSjipOgEi1grfoOKMVXEWFVjqvheVUVcF4Oz7rvvvhz7lTr4AID6FV9F30/0Z0XSL6o3VVzmJQadR1Kx6hYD3quWrxRfia9gaZH4AxaLQYMG5YWDr7vuuhyMxJ+xH8dL4h/9KEEZU/lPPvnkHDyVFjqOEUNRSqG6bV4LLlcMbKJ2eAQh8Q4XX3xxLh8QMwznV9RXLwUopVrpc9tK50aCsfQd43gk+KJ8Z9RUj4RnJAujnETFkVQRRFZX9qCiigFalB6NAC+uie3UU0+tts56SQSZpZH/AMCyI0oo1dQJEiOroxxUxSRedDxV7Xy57LLL8n6Ud9p2223zbL8YnBQdLFU7ZWKAUrSVRJwRo69jHeM2bdrksuERU0Un1euvv57LO0VFgZLouNlll13K9yM+iRHc1YnvVbETLGKj6spkVVUqKfXOO++Ux0JR3aAUI81L1ZgqYqS4R8R+pXeuSVSwiMoSyqcDQP2NryKWiH6n0gy60my2HXbY4QexVWxVB6GLryoTX8GSJfEHLBYxSqg06qkkSktVLD8Qo6A6dOhQvh/lpyIhFiOpooznJptsUu0WI6XmR8eOHfN9KorkY5RRmNsI94pKAd0TTzxRHvTMa4vyBBVrrMe18b3i94j7RfB15513pmHDhlVa2DkCwfhN5ldpNNmCinKhkYQEAJYtkZCLMk2xRadSqZxUDO6JdY/jeKy7UrUCQawhE+u67Lvvvrlzavvtt8/VFfbcc8/csVPdVjGOi+oMUZoqSoVHh04MwopKBVGGPPajfHskFt9+++3cURVx4H777Tff36niwKcobTU/5Z2qKxU1P22LM6aKgV5RbgsAqH/xVRg1alQ6/fTTK/UxxUy9mElYdasaG4mvqie+giVD4g9YLGqauVbxeNVzIlCKQGJ+66vP6/mPPvroD2qTx+LGpTIN86Pqu8QCxRH4xZqFpS0WWI5kXsWyBxVHVsU6Ooceemi+LkR5rZh9GMFMxd9gypQpac0116wUqM1L/GZRgjS2GJE2r4Rm3DPqrkfnHwCwbIkOlOi4iS3inPCrX/0qV0+IEeNxPNZMrtgpFCOsjzzyyFyCqRRnDB48OFdaiE6sl156Kf3zn//Mg7GiksADDzyQR52XRnVHfBFr0kRZ9livOET50LhHrB0Tg6piHZtYR/mAAw7I1R1iDZooJTovUX40SppHNYSSjz76qPw95xYLldqiY6gUC5Visfkd4FVRXBv3iHKo83OPKM0VFS0++eSTBX4WALBsx1clDz74YBo+fHilvp0YgF6xz6i0leKoIL6qnvgKlhyJP2CxiNl7pYCpJOqfx/GSDz/8ML355pvl+zGqKZJoiyPxFw466KA8SqtiKc0IyKLOecXSV3NTdURT1HqPtQJfffXV8i2CsgiOaipZEDP7/vCHP5TvR+AYI8VipH1cF51sEfRFSYOY0VgSNdmrE4s/n3TSSfnaCOhK9db/+Mc//mA9nqpitFgkPy+66KL5+v4AQN0R//ZHgi62WO+lJNZsiVLmMeApyqhXXPM3YoZYo7hiLBLxRnQkRSdVrE0TsUqIdYDj/ChbVRKDpaLjKQYOVRQDlmLd4kgghrh/xCGx1kwMlJpXJ1A8K86LTq4YSV8aHBXHu3XrlktUVRwQVVWpZNTGG29cHgtFp1zFtnm54oorcjWK+F3j94h7lMpgzS2mig6s+J1irZ35rUQBABQnviolsaI/KPp2Ks5um59Sn+KrHxJfwZIl8QcsFhFoxHp2Rx99dE74xZ9R8rJiR1IERv369csjpCIRFSN7TjjhhMXy/NICw7/73e/S+eefn66//vocfMWIp4rrDM5L1VmJUWs96ptHArC0xUiquSXqYvRWBFxvvfVWLjMa5RWiZEOs/Re13KMMaIxoigWNYy3Av//97/leMZqr6rvEqKsozxVlHiKoq7rG39yCqBdeeCH/vcQ6ivHe8zOjEACoOyJ2evzxx/PApoiZZs6cmTubYn2XUkwSJcc7d+5cfk382x+lpGIdm6r+/Oc/50FMf/nLX/J+xBVRqeCCCy5ITz31VD624oor5s6mKHcV8UZppPZvfvObXM3gl7/8Zd6P+CjKWEVn0rnnnptHx9ckOqBi0FPEfxETxcCvKJUVW8RJ8Yy//vWvOXaqqGLs0rNnzxrLrsc7z02cE7FhlOaK2Crip6pr0Mwtpvr1r3+d1lhjjdw5VfW9AIDix1fh4YcfTh988MEPZgLGgPPqyqjHzL0S8dUPia9gyfp/tekAFsFOO+2UxowZk0477bRcpzzKGvzjH//ISauSddddN/Xu3TsHPxFoxbmlkUSLQ9wvEmh/+tOf8gitzTffPJevqrgY8rxUDTQi0IqtptFJzzzzTE7KbbPNNuXHY1ZejOy65JJL8qipWF8vgpkQgVfM1ItyDvFuEyZMSP3790/33HNPuvrqqystnhz3jdFfkcCMkfmRhIygquScc84pT1RWHYkV1/3sZz9Lu+++e3lQGiPM4vtFh1913/ubb77JaxBWV8ceAFh6Ioa46qqr8lrAxx13XB4oFAOIYtR2jKqOjp4oMx4lOqOCQiT74t/7rl275hHWpVHWFQc0RVwRA6Si/HjFjqwYrBVxRnR4xaCheEZJxAZRqikGEUVnVcQ0EY8MHDgwj4SPYxEDRWmsDTfcMJewipHepRLoEffEO8T3iMFYpbWNo+RoJCajWkMMEovKDBE/RhxScaZiTYOsqor4KEpEjRs3Lr9LRfH+0Ra/Wax7HKW04rcsrTsdFRwibix1bkVMFe9XUupMe/rpp8u/V8RUUZGhupgqfrPo5IpYeF4dZgDAshFfxWDzGCwV8UP0bVXsP4q4qxRXVBRxTXXEV+IrWCrKAJaCs846q2zDDTcsq+u+/PLL6CEre+KJJ+Z57hdffFHWvHnzsk6dOpU999xz+dj7779f1qVLl7JVV1217Pzzzy/75ptvys+/8847y7p27VrWokWLsgceeKD8+MSJE8s6dOhQtvXWW5d9//335ce33377st12263SPar68MMPyy688MJ8btOmTctmz56dj5933nllq6++etnHH39cfu6wYcPys6vb4ns0a9asrE+fPgvxqwEAi9PUqVNznFHRk08+mf+tf/XVV3NMddNNN+Xj06ZNK7vooovKdt5557LJkydXuuboo48uO+igg3K8EPHJz3/+82qf95///KesYcOGZZdddlml4xHLtGnTpuyll17K8UbcJ2KGzTbbLF9TMnPmzPys/fffv9L1l19+eY5vKvrqq6/y+8Z32Wuvvcq+++678jgpYrBrrrmm/Nzjjz++bM8995zn7xXPidhrm222KRs3blyltkcffbSsSZMmZQ8//PBc7zFy5Miy0047LcdDgwYNysc+++yzstatW+c4tqJSPFfdttJKK5U1bty4PDYEAJb9+CrihIhTjjzyyPJrI06IYxFrVPT555+XDRw4sKxdu3b5+qrEV+IrWBoaxP+p7eQjUHwx2ihG80ycODEVSZTfbNasWaVjsYhyjKiqOJopROmD8847L5eSqFpjPeqvx5p/MUuvJEpIRG30uY1mihFmW2yxRS4NEaP4d9555/K2t99+O5d6AACKJf5fuKrrElfn4IMPzqO6o+xSlFOKkeURW1QnSrDHusbzWhd5/Pjxec2Y6p4fI7VLo7ZDlBCNkuax7ktJxDv77rtvOvDAA/Po84rnn3jiiTkW2m677dLiFCPHY4T43MT6OlEufs8998zvVYrvIkaLuK3iewIA9Su+ihlul19+edp0001zSdBS30/ECI8++milaldht912S2+++WZeM7DqbLnqiK+AxU3iDwAAgKUmSjVFOSgAgCKqbpD4kia+AiqS+AMAAAAAAIACaFjbLwAAAAAAAAAsOok/AAAAAAAAKACJPwAAAAAAACiARrX9AsuqOXPmpMmTJ6eVV145NWjQoLZfBwBYCLHU8YwZM9Kaa66ZGjY0HqouEGMBwLJNfFU3ibEAoP7EWBJ/CymCpbZt29b2awAAi8GkSZNSmzZtavs1EGMBQGGIr+oWMRYA1J8YS+JvIcUIqdKP3Lx589p+HQBgIUyfPj13gJT+Xaf2ibEAYNkmvqqbxFgAUH9iLIm/hVQqixDBkoAJAJZtyh3VHWIsACgG8VXdIsYCgPoTYym2DgAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAF0Ki2XwAAAKrqe0ff1LhZ49p+DQDqgDH9xtT2K0Bx9O2bUmMxFgCLYIzYrK6T+KujLhj36RJ/xmmbtlrizwAAAAAAAGDpUOoTAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKoNYSf59++mnq2LFjevfdd8uPTZw4MfXo0SO1bNkynXLKKamsrKy87fHHH0/rr79+atWqVbrssssq3WvkyJGpffv2ac0110zDhw+v1Hb11Ven1q1bp06dOqVHHnmkUtvvf//7/Kxu3bqlCRMmLLHvCgAAAAAAAIVM/EXSb6+99qqU9Js9e3bq3bt36t69e3ruuefSyy+/nIYOHZrbpkyZkvr06ZP69euXnnrqqTRs2LD06KOPlicLDzrooHTGGWekBx54IJ155pnptddey22xf/LJJ6frr78+3Xrrrenwww9Pn332WW7785//nLfRo0enc889Nx144IHpm2++qY2fAwAAAAAAAJbNxF8k2X7xi19UOnbfffeladOm5dl8nTt3Tueff3664YYbclsk+mI2XyT3unTpkpN7pbYhQ4akHXbYISf1unbtmo499th0yy235LZrr702HXrooWnvvfdOW221Vf7zrrvuKm+LpOC2226bk4rrrrtu+p//+Z+l/lsAAAAAAADAMpv4+8tf/pKOP/74SsfGjx+fevbsmZo1a5b3o/xmzPortUVyr0GDBnl/iy22SM8//3x524477lh+n/lpixKiL774Yo3XAQAAAAAAwLKmUW08NNb2q2r69OmVjkeSb7nllktTp07NbRtssEF5W/PmzdPkyZOrvW5+2mbOnJnmzJnzg7bXX3+9xneOUqSxVXxfAAAAAAAAqNcz/qrTqFGj1KRJk0rHmjZtmmbNmvWDttLx6q6bn7Y4Hmq6rjqDBw9OLVq0KN/atm27WL43AAAAAAAAFCrxt+qqq6YpU6ZUOjZjxoy0/PLL/6CtdLy66+anbYUVVshbTddVZ+DAgXkNwtI2adKkxfTNAQAAAAAAoECJvx49eqSnnnqqfP+dd97JpTUjeVe1bdy4cWmttdaq9rr5bdt8881rbKtOzA6McqAVNwAAAAAAAKgr6kzib7vttsvr5t144415//zzz08777xzXuevT58+aezYsenhhx9O3377bbroootSr1698nn77rtvuu2229KLL76Y1+7705/+VN623377pWuuuSZ9+OGH6eOPP0433HBDpbYLL7wwPzPW9hs5cmR5GwAAAAAAACxr6kziL9bdGzJkSDr22GNTq1at0qhRo3JiLsT+5ZdfnvbYY4/UunXr9Nprr6XTTz89t2288cbphBNOyDP4YsZeJAqPPvro3Na7d++00047pS5duqSOHTumTTfdNO2zzz657aijjkprrLFGatOmTeratWvq379/6t69ey3+AgAAdUfERmefffZczxk6dGjafvvtl9o7AQAsKe+++25q0KBBnb8nAMC8NEq1qKysrNJ+zOx766230vPPP5969uyZVltttfK2AQMG5Bl5r776atp2223TSiutVN523nnnpYMOOijP7PvpT39avlZfBFe33HJLOv7449OXX36Z20oBV5TufOihh/JMwvi8xRZbLLXvDQAAAEDd0a5duzR16tQFvi4GQcWAqdgAAFJ9T/xV50c/+lHac889q22LWXuxVWeDDTbIW3Virb/qNGzYMCcRAQAAAKi/oo9olVVWqe3XAAAoTqlPAAD+T6xrHAOamjVrlrbaaqv05ptv/qCsZsXSUVGSc/fdd8/VDVq0aJEOPPDAvI5xyf33359Lm0dn1uGHH55mz55d3tahQ4f8vIEDB+YBWC+99FKlZ2y22WapZcuWubT6d999N893/9WvfpWOOeaYSt9lzTXXTHPmzFksvw0AQE0iXoqKTnvvvXeOiXbbbbf00Ucf5baJEyembbbZJh+PpWQ++OCDeZblfOyxx3KsNHr06NS+ffu06qqrpquuuqq8MlWc//jjj6fDDjssf45j8+PZZ59NW265ZX6XWJJm2rRp5W3Dhw/Pg95XXHHFXPnq008/LW+LZXAirlp55ZXTAQcckL7++utF+r0AgGKS+AMAqGMOPvjg3IEU6xpHAvCMM86Y5zWR3Iuk23PPPZc7rkrXRNIwOr8icRedTM8880y6+OKLK10b50bn17Bhw3LnVsltt92WzjnnnNzpFR1e119//Tzfo2/fvunuu+8uL+l+1113pf333z+Poq9OJCEjSVlxAwBYWBHv/OQnP0kvvPBCXtolknEzZ85Mu+66a9pll13ShAkTUtu2bXN8ND8Dkz777LN04YUXpnvvvTfHRSeddFJOuEUSLkqDbr311unqq6/On+PYvHzxxRd5wFZs8S4R+8Q9w4wZM9Khhx6aBg8enAdjNWrUKF166aW5LZa+OeWUU3J89p///CfHeDfddFONzxFjAUD9JfEHAFDHrLDCCunbb7/No8oj2Ta3Tp2S6HQ65JBDUpcuXdKpp56aRo0alY/ffvvtaZNNNskz/aLt6KOPzkm8imK0eayLvNNOO+XR5SU/+9nP0l577ZU23njjPItv5MiR83yPuEd0ND311FM5+RfvESPSaxIdW/H80hYdcQAAC6tNmzY5FopZc1EV4Z577skDkWKW3FlnnZVn7l1xxRXp9ddfzwOi5iWShtdee23acMMN05FHHpm++eab9PHHH+d4LaopRHIuqjTE5zg2L/E+jRs3Ln+Xk08+uTw2i3vFFs/48Y9/nI9HsjFEEjNEW3y3f//733nQV03EWABQf0n8AQDUMbfeemt69NFH01prrZV22GGHXJqqqlmzZlXar9iZE9dFh1SImXzjxo3LnVGxRefS+++/X+na4447rtr3qLi2crt27cpLZc1NdFZFyao777wzj7iPmX4x6r4mUWI0yluVtkmTJs3zGQAAc0v8lUp2Rkz0/fffp8mTJ1eKa5o2bZrbqsZE1YmS5926dcufl19++fxnqbLBwojYbMqUKfm+EZtFtYTYj1mEkTiMGX0x8GuNNdZIffr0KY+N4v3//Oc/59hp9dVXT7/85S/zLMOaiLEAoP6S+AMAqEMioRdr6T300EN5TZdYi6Z///65A6tiOarnn3++0nVR3rMkOnZivb5S51fv3r1zuavYxo8fn+9dUcVZfhVV7CCKDrPWrVvP13eIGX6R+IuSn9GZVXW9nIpi9Hrz5s0rbQAACyuSeaXEXMQyMSgp4qF33nmn/JyoThCxTcy4m5d5xSYxyGlBEoHxLt27d68Um8UgrZgF+Pnnn+d468knn8yDuFq1apV+85vf5OvifTfffPM8sCrivogT//CHP9T4HDEWANRfEn8AAHVIJP169eqV19v75JNPckdSHItR6S+//HJenyVGhV900UWVrnv66adzSdA33ngjr0Oz77775uMHHnhgeuKJJ/Lx6AC68sor8/qB8yOSdw888EB68cUX89o1sRbO/Nh+++3Tl19+ma655pq5lvkEAFjcIkEWZS4j0Tdo0KAcv8QW6+fF/nvvvZeOP/74XAK9R48ei/y8zp07p0ceeSRXRnj44YfzDMO52XPPPXNyMsqMxgy/KKW+22675ZgvYr+Io2Lt5kgChogDQ1SAiHUKx44dm79LxTYAgIok/gAA6pAYjR2lPs8999zckTRmzJh03XXXpR133DF39nTt2jV3GP33f/93petiVt+QIUPSZpttlq+LdWNCfL755pvTiSeemNZee+00YcKENHz48Pl6lygvFWWitttuu7Tzzjvndf7mx3LLLZcTj7FG4eLoUAMAmF89e/bMSbWNNtoor4d31VVXpZVWWikPZnrwwQdzLBWJt1iHOGbrLarTTz89vfXWW3n24IABAypVaKhOlPeMtfsuvfTS1KlTp3THHXfk/ZiZuN566+Xjv/71r3MM99prr6WLL744Xxdx4FFHHZX233//tM466+REYTwbAKCqBmWLUpi8HovR9rE4ctRJXxLlEi4Y92la0k7btNUSfwYA1Od/z5eWs88+O5d8Gjp0aG2/Svrqq6/yjMRIXMb6M+edd95C/Z30GtIrNW7WeIm9JwDLjjH9xtT2K7CMxFcRC8X22GOPLdXnLlN/L716peaNxVgALIIxYrO6HmM1WmpvBQBA4UVZqhiFvu666+ZR9QAAAAAsPRJ/AADLuJjxV1fEWoRff/11bb8GAFAP9e/fP28AAPWZNf4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgABrV9gsAAEBVI/YfkZo3b17brwEAUCwjRqQkxgKAQjPjDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKoFFtvwAAAFTV946+qXGzxrX9GgAUzJh+Y2r7FaB29e2bUmMxFgCLyRixVV1kxh8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAAAAAAAAFIDEHwAAAAAAABSAxB8AAAAAAAAUgMQfAADz9Nhjj6UOHTrkz0OHDk3bb7/9fJ8PALCsqo2Y5t13300NGjRY5HMAgPpJ4g8AgMVum222SRMmTKjt1wAAWOa0a9cuTZ06tbZfAwBYRkn8AQCw2DVq1Cg1b968tl8DAGCZ07Bhw7TKKqvU9msAAMsoiT8AgIKIGXYbbbRRWnXVVdNvf/vbtN5666Urr7wyjRo1Kq277rppxRVXTDvttFOaPHlypZKdf/nLX1Lr1q3zduedd5bfb8iQIalNmzZ5e/DBB3/wvJquC0p9AgBFMnr06NS+ffscZ1111VX52MSJE3OVgxYtWqQ99tgjffDBB+Xn9+/fP5199tnp1ltvzXHYtddeO19tcyvj+Y9//COtvfbaqVWrVunmm29eot8XAFh2SfwBABTEgAEDUr9+/dKjjz6abrjhhrwdfPDB6YADDkgDBw5Mb775ZlpjjTXSueeeW35NdFhF0m7s2LHpsMMOS7/5zW/y8fHjx6djjz02XX311em+++5Lt912W6Vn1XTdgpo9e3aaPn16pQ0AoC757LPP0oUXXpjuvffedM4556STTjopzZw5M+26665pl112yYOv2rZtm/bee+80Z86c8useeOCBnCS85JJLUp8+fSrdc25t1fn4449zTHfqqaemp59+OicB50aMBQD1l8QfAEBBvPDCC2n//fdPG2+8cdpwww3T+++/n1ZaaaX03nvvpQMPPDC99dZb6csvv0yvvfZa+TWxf9NNN+XR4//1X/+VJk2alI/ffffdaeedd84dWF27dk0nn3xypWfVdN2CGjx4cB4lX9qi0wwAoC6JJF/Myov46sgjj0zffPNN+vvf/55WXnnldNZZZ+WZgFdccUV6/fXX0zPPPFN+XcRekeDr3bt3WmuttSrdc25t1bn//vtTx44d0xFHHJHjr5gxODdiLACovyT+AAAKIjqBnnrqqfT555+nN954I22wwQaprKwsnXbaablDKf789ttv0/fff19+zfrrr59nAYbll1++/PhHH32U2rVrV77fuXPnSs+q6boFFTMRp02bVr4tbAIRAGBJadmyZerWrVuluCdm4EUirqRp06Y53oqBVyWHHnpoTrpVZ25t1ZlXbFaVGAsA6i+JPwCAAogEXyT6jj/++PSjH/0oHXLIIXnm39/+9rdcDipm/T355JN5VHlFzZs3r/Z+kdQrrQUYKnZize26BdWkSZN8r4obAEBdUl18EiU933nnnUqlNSN2itl/JbG+ck3m1rYwsVlVYiwAqL8k/gAACiDKdz7xxBN5zb0oHXXZZZfl4zNmzMhJwZgFGGv1/eEPf8j78xIJwig/FWvZvPTSS+niiy9eCt8CAGDZsNdee+U4a9CgQXmAVQy+6tKlS+rRo8cSeV6sJ/jqq6/mUusR682r1CcAUH9J/AEAFMA666yTR4L/9Kc/zWWnVlhhhTRgwIBcRqpDhw65NGd0TB111FHplVdeSV9//fVc7xedVpdcckk6/PDD0x577JF23333pfZdAADqulhHOQZJPfjgg3k95JiBN2rUqNSw4ZLpamvTpk0aNmxYjue22WabtPXWWy+R5wAAy74GZfMz5JsfmD59eq7FHnXSl0S5hAvGfZqWtNM2bbXEnwEA9fnf86XphhtuSCNGjEhDhgxJzZo1SxMmTMgJu1h/Zln6bqW/k15DeqXGzRrX9usAUDBj+o2p7VcovCLFV4X8e+nVKzVvLMYCYDEZI7aqizFWo6X2VgAALDE77LBDXs9vo402Sl999VVeX+aCCy7Q4QYAAABQj0j8AQAUQKdOndI///nP2n4NAAAAAGqRNf4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAa1fYLAABAVSP2H5GaN29e268BAFAsI0akJMYCgEIz4w8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACqBRbb8AAABU1feOvqlxs8a1/RoAFNyYfmNq+xVg6erbN6XGYiwAloAx4qq6wow/AAAAAAAAKACJPwAAAAAAACgAiT8AAAAAAAAoAIk/AAAAAAAAKACJPwAAAAAAACiAOpn4GzJkSGrbtm1q1qxZ2n777dPbb7+dj0+cODH16NEjtWzZMp1yyimprKys/JrHH388rb/++qlVq1bpsssuq3S/kSNHpvbt26c111wzDR8+vFLb1VdfnVq3bp06deqUHnnkkaX0DQEAAAAAAKDgib+33nornXPOOWnUqFHp1VdfTZ07d079+/dPs2fPTr17907du3dPzz33XHr55ZfT0KFD8zVTpkxJffr0Sf369UtPPfVUGjZsWHr00UfLk4UHHXRQOuOMM9IDDzyQzjzzzPTaa6/lttg/+eST0/XXX59uvfXWdPjhh6fPPvusVr8/AAAAAAAAFCLxN27cuNSzZ8+02WabpXbt2qX/+q//Sm+++Wa677770rRp0/JsvkgGnn/++emGG27I10SiL2bzRXKvS5cuOblXaovZgzvssENO6nXt2jUde+yx6ZZbbslt1157bTr00EPT3nvvnbbaaqv851133VWr3x8AAAAAAAAKkfjbYIMNcsnNF154ISf6rrnmmrTLLruk8ePH54RglP8M3bp1y7P+QrRFcq9BgwZ5f4sttkjPP/98eduOO+5Yfv/5basqZhxOnz690gYAAAAAAAB1RZ1M/O23335p0003Tausskou3XnJJZfkRFvHjh3Lz4sk33LLLZemTp36g7bmzZunyZMn588L21bV4MGDU4sWLcq3WIMQAAAAAAAA6oo6l/h75pln0pgxY9LTTz+dvvjii7xu3x577JEaNWqUmjRpUuncpk2bplmzZv2grXQ8LGxbVQMHDswzEEvbpEmTFvt3BwAAAAAAgMIk/oYPH54OPPDAtOWWW+aZdeeee25666230qqrrpqmTJlS6dwZM2ak5Zdf/gdtpeNhYduqigRhzAisuAEAAAAAAEBdUecSf3PmzEmffPJJpWRcaVZflP0seeedd/K6e5G869GjR6W2cePGpbXWWit/Xtg2AAAAAAAAWJbUucTftttum+688850+eWXp7/97W/pZz/7WfrRj36Ujj/++Lwm34033pjPO//889POO++c1/nr06dPGjt2bHr44YfTt99+my666KLUq1evfN6+++6bbrvttvTiiy+mmTNnpj/96U/lbbGW4DXXXJM+/PDD9PHHH6cbbrihvA0AoDbF4Ke99torNWvWLK2xxhrp2WefzcfffffdvNbx4rQk7gkAUJ8NHTo0bb/99ost/nrsscdShw4dFtPbAQBF1ijVMZGoe+WVV9If//jH9NFHH6WNNtoo3XXXXalx48ZpyJAhec2/U045JTVs2DAHPaFVq1Y5URhrAa600kpplVVWyQFW2HjjjdMJJ5yQNt9887yGX5cuXdLRRx+d23r37p3uuOOOfCzstNNOaZ999qnFbw8A8H8ilolYKEqex7rHUeUAAAAAAJapxF+MdjrjjDPyVlXM7IvOr+effz717NkzrbbaauVtAwYMyLP1Xn311TxrMBKAJeedd1466KCD8sy+n/70p+Xr+MWzbrnlljyb8Msvv8xtRrsDAHXBZ599lrp27Zp+/OMf5w0AAAAAlrlSn/MSZT/33HPPSkm/ko4dO6bdd9+9UtKvZIMNNki77LJLedKvoljrL8ovSPoBALUtSpRHTDJo0KB000035c/rrbfePK+LsuebbrppLg26xRZbpJdffjkfX3/99dMjjzyS7r777lwx4auvvsrVE4477rh53jPKi2655ZapRYsWuSrCtGnTytuGDx+eY68VV1wxD7769NNPy9uiEsOaa66ZVl555XTAAQekr7/+eqF/DwCAZdU333yT9t9//9xPFVWqPvnkk4WO6UpGjx6d2rdvn6tBXHXVVUvw7QGAZdUyl/gDACiyKHs+derUdOqpp+YS5/G5tL5fTebMmZPXLo7k3Ntvv5222267dPLJJ+e26Dh64403cin1rbbaKr322mt5f7PNNpvrPaO8aAyoim3ChAl5reWTTjqpfP3BQw89NA0ePDi99NJLqVGjRunSSy/NbVF9IRKLkcD8z3/+k958882cwKzJ7Nmz870rbgAARfDUU0+lbt265VgqBmAde+yxCx3TlSpCXHjhhenee+9N55xzTo7NahpgJcYCgPqrzpX6BACoz2Jd41ivONYmjkoF8Xl+jBs3LrVs2TJ3LEXSLhJ8FRN/U6ZMSXvttVdOzM1P4u+ee+7J73LWWWflWYfR6XTIIYfktkj0xRaj2KMMaYw8j46q0KRJk/xntMWMwH//+99zfU4kD2N2IwBA0USc9Pvf/z4n/c4+++z0k5/8JH3//fdpueWWW+CYLsycOTNde+21acMNN0xdunTJFRw+/vjjPAOwKjEWANRfZvwBACzjojMpymuutdZa6ZhjjsmzBKNTqWLi74MPPsijxmOGXqx7HB1GcxPnR7IwOp4i+di3b9+8H6PKV1hhhTyj7/rrr09rrLFGXod50qRJ+bpI9v35z39OAwcOTKuvvnr65S9/md+nJnFelBAtbaX7AAAs6yIhF3FaaNeuXfruu+8qlUdfkJguRFwWMwhDaSmbsrKyau8lxgKA+kviDwBgGffYY4+lIUOG5DVgnnnmmfSrX/2qvC0Sf1HmM2bkxcjw++67L6299tp5xt7ctGnTJnXv3j298MILeRs/fnwegR6zAD///PPUunXr9OSTT+ZR5q1atUq/+c1v8nWTJ09Om2++eS5P+u677+bOrT/84Q81PidmCDZv3rzSBgBQBDHYqpSYixgpZvqtttpqCxXThQWJk8RYAFB/SfwBACzjYs29EOWgxo4dm0488cTyTqboXIpZepGoixl4sebevMp8hj333DO9//77udMpZviNHDky7bbbbvm+n3zySdp+++3T/fffn5OAIUawh4kTJ6Zdd901v0fpvUptAAD1Scyyu/jii/NgqCi7GfHV3AZfzS2mAwCYXxJ/AADLuEjIxRYJvQEDBqQjjjgijyqP2XilWX/rrLNO/hyz/uYn8RflPWPtvksvvTR16tQp3XHHHXk/OqvWW2+9fPzXv/516ty5c157Jjq1QiT9jjrqqLT//vvnZ0Zn1emnn76EfwEAgLqnR48euUJClOf88ssv0zXXXLNIMR0AwPxoUGbo0EKZPn16atGiRa6TviTKJVwwruaa74vLaZu2WuLPAID6/O85C/930mtIr9S4WePafh0ACm5MvzG1/QqFI76q438vvXql5o3FWAAsAWPEVXUlxjLjDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACqBRbb8AAABUNWL/Eal58+a1/RoAAMUyYkRKYiwAKDQz/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgABrV9gsAAEBVfe/omxo3a1zbrwEAaUy/MbX9CrD49O2bUmMxFgC1ZIy4amkw4w8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAGAZ8u6776YGDRqkuqAuvQsAAAAAEn8AAMuUdu3apalTpy7wddtvv30aOnRonXgXAACq16FDh/TYY4/V9msAAMswiT8AgGVIw4YN0yqrrJLqgrr0LgAAAABI/AEA1Cl/+9vf0jbbbFO+/8UXX6SmTZumKVOmzLW85rhx49JPfvKTtNJKK6Wtt946vfTSS/n4gAED8vmPP/54Ouyww/LnOFYyceLE/LwWLVqkPfbYI33wwQflbf37909nn312uvXWW9O6666brr322krPrOldxo4dmzbddNPUrFmztMUWW6SXX355Mf06AAB1w/rrr58eeeSRdPfdd+fBUF999VU65ZRT0nHHHTfXWOjhhx9OG2ywQW7baqut0ptvvpmP77bbbjmueu+999IOO+yQP19wwQXl191///2pa9euedDV4YcfnmbPnl0r3xsAqPsk/gAA6pC99torJ/Ei4Rceeuih3Cm0+uqr13jNtGnTcmfRnnvumV577bXUo0ePdNBBB+W2yy+/PJfjjGTg1VdfnT/HsTBz5sy06667pl122SVNmDAhtW3bNu29995pzpw55fd+4IEH0lVXXZUuueSS1KdPn3m+f1y73377pX322Se9/fbbabvttksnn3xyjedHp9X06dMrbQAAdV0k9t544430yiuv5FgtYrDY32STTeYaCx188MF5MFacHwnAM844Ix//+9//nuO0iMfGjBmTP//2t7/NbZEcjBjthBNOSM8++2x65pln0sUXXzzX9xNjAUD91ai2XwAAgP+nefPmeZR3JPz233//PLp73333nes199xzT2rZsmU6/fTT8/5ZZ52VZ/+FFVZYIW+NGjXKI8srluaMTqWVV145nx+uuOKKnGCMzqSePXvmY2+99VbuxIoZgfMrEpfxPpFMjARmdGzVZPDgwWnQoEHzfW8AgLqU+IuqDDFw69VXX837m2+++VxjoYjLvv3227Tqqqum66+/Pn333Xf5+Iorrpj/jNmDUcGhYsx2++2354RizPQLRx99dPrrX/9aHvtVR4wFAPWXGX8AAHVMjBK/77778udIAMaI8bmZNGlS6tixY/l+dDQdcMAB83xO1euipOhaa62V3n///fJjhx566AIl/aKzKmYUxn2OOeaYPFr9+++/r/H8gQMH5hmLpS3eCQBgWUn8RZn0mNUXZdY//PDDtOGGG841FooS6o8++mhuj8FeUXZ9XuIZkUyMZGBsMYOwYrxWHTEWANRfEn8AAHVMlNT85z//mV588cXUrl279OMf/3iu50dJqFhvryRKeG600Ubpf//3fysl5MrKyipdF/d+5513KpWEmjx5cmrfvn35sdLo8/n12GOPpSFDhuS1bGLm4K9+9au5nt+kSZM8y7HiBgCwLCT+osxnlDnv0qVLHrS19tprpyeffLLGWGjWrFl5hl8M7Pr000/zOsuxpnJF1cVsbdq0Sb17904vvPBC3saPH5/vMTdiLACovyT+AADqmCj9tN566+USTTH7b15ibb/PP/88nx8jws8999w8srx169bl53Tu3Dk98sgj6aOPPkoPP/xwbo+yVDNmzMhloN577710/PHH546rWCNwYcX9QpS1Gjt2bDrxxBN/0HkFALCsW2211dLXX3+d460olR7r8G222WZzjYUi6derV680bNiw9Mknn+TjpVKfFWO2Bx98MMdsMRAsHHjggemJJ57IMwwjoXfllVfmdQIBAKoj8QcAUAfFun7Dhw+fZ5nPEKU4Yy3A0aNHp/XXXz89/fTT6a677koNGjQoPyfWgIn1+mI234ABA/Lo9Fg/5oEHHsidS127ds0lo0aNGpVHmi+s3XbbLW/R8RXPOeKII/Iswo8//nih7wkAUFdn/a2zzjr5cwyeivhnbrFQzLqLUp8xSCsSfLHe8nXXXVfpnhdffHFevzkqM5x99tn5WJx788035yRizCqMtQMjTgQAqE6DMkOwF8r06dNzJ1vUSV8S5RIuGPdpWtJO27TVEn8GANTnf89Z+L+TXkN6pcbNGtf26wBAGtNvTG2/wjJFfFXH/1569UrNG4uxAKglY8RVSyPGMuMPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACqBRbb8AAABUNWL/Eal58+a1/RoAAMUyYkRKYiwAKDQz/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgABrV9gsAAEBVfe/omxo3a1zbrwEAlYzpN6a2XwEWTd++KTUWYwFQS8aIpZYGM/4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAA6nTi79RTT029e/cu3584cWLq0aNHatmyZTrllFNSWVlZedvjjz+e1l9//dSqVat02WWXVbrPyJEjU/v27dOaa66Zhg8fXqnt6quvTq1bt06dOnVKjzzyyFL4VgAAAAAAAFCPEn8TJkxI11xzTbriiivy/uzZs3MSsHv37um5555LL7/8cho6dGhumzJlSurTp0/q169feuqpp9KwYcPSo48+Wp4sPOigg9IZZ5yRHnjggXTmmWem1157LbfF/sknn5yuv/76dOutt6bDDz88ffbZZ7X4rQEAAAAAAKBAib85c+akI488Mv32t7/NM/HCfffdl6ZNm5Zn83Xu3Dmdf/756YYbbshtkeiL2XyR3OvSpUtO7pXahgwZknbYYYec1OvatWs69thj0y233JLbrr322nTooYemvffeO2211Vb5z7vuuqsWvzkAAAAAAAAUKPF33XXXpRdffDF16NAhjR49On3zzTdp/PjxqWfPnqlZs2b5nG7duuVZfyHaIrnXoEGDvL/FFluk559/vrxtxx13LL/3/LZVFTMOp0+fXmkDAAAAAACAuqLOJf5mzpyZzjrrrDzT77333kuXX3552mabbXKirWPHjuXnRZJvueWWS1OnTv1BW/PmzdPkyZPz54Vtq2rw4MGpRYsW5Vvbtm2XyPcHAAAAAACAQiT+7rzzzvTll1/mNfoGDRqUHnrooTRjxoz017/+NTVp0qTSuU2bNk2zZs1KjRo1qtRWOh4Wtq2qgQMH5lKjpW3SpEmL/bsDAAAAAADAwmqU6pgPPvggl/Rs1apVeXIuynq++uqracqUKZXOjYTg8ssvn1ZdddVKbaXjYWHbqooEYdXEIwAAAAAAANQVdW7GX5s2bdJXX31V6ViU/PzjH/+YnnrqqfJj77zzTl53L5J3PXr0qNQ2bty4tNZaa+XPC9sGALCseffdd8vXPF6QtgU5Z0E99thjed1mAIAiikHke+21V2rWrFlaY4010rPPPlvbrwQA1HN1LvG35557ppdffjldd911efbfn/70pzR+/Pi0zz775DX5brzxxnze+eefn3beeee8zl+fPn3S2LFj08MPP5y+/fbbdNFFF6VevXrl8/bdd9902223pRdffDGvHxj3K7Xtt99+6Zprrkkffvhh+vjjj9MNN9xQ3gYAsKxp165dXv8YAIClY+jQoemjjz5Kb731Vnr88cdzPAYAUJvqXKnP1VZbLd17773p5JNPTieeeGL68Y9/nEaMGJHatm2bhgwZkvr165dOOeWU1LBhwzyCPERZ0MsvvzztscceaaWVVkqrrLJKDrzCxhtvnE444YS0+eab5zX8unTpko4++ujc1rt373THHXfkY2GnnXbKCUYAgGVRxEcRBwEAsHR89tlnqWvXrrn/KjYAgNpW52b8ha233jqX4Jw1a1YeMRUJuhAz+2L/pptuSq+88kraYIMNyq8ZMGBAeu2119KwYcPShAkTUuvWrcvbzjvvvFzGc+TIkelf//pXWmGFFfLxKGV1yy235BFZkWwcPXr0Yi9vBQCwuGy//fbpsMMOS6uvvnr6xS9+kT+vvPLKOYZZ2FKd//jHP9Laa6+dB1LdfPPNldr69++fzj777HTrrbemddddN1177bXlbVHGasstt0wtWrTIA6emTZtW3haDtaJ8e2wPPvjgIn9vAIAlqbrS5BFTxaDyOB6xVvv27fNyM1dddVVuj+pScc6gQYNyP1V8Xm+99eZ6v4jVSm3V3XNubdF/teGGG5bfL6paRf/Wq6++usR/HwBg2VInE39z86Mf/SiXA42ZgVV17Ngx7b777nnWX1WRJNxll13S8ssv/4O2WOsvOtIk/QCAui7WOY5OqOHDh6fu3bvn0uVjxoxZqHtFqfMDDjggnXrqqenpp5/OScCqHnjggdzhdMkll+RBWOGLL77IMVdsMeAqyrGfdNJJuS1KtB977LHp6quvTvfdd1/uFJubWLM5rq+4AQDUpRl9F154YR4wfs455+SY5+uvv85Ly0SJ9YijojpVfJ7f9f1quufc2vbee+88GD4GvYeIs9ZZZ53yZGNVYiwAqL+WucQfAEB9duCBB5aP9j788MPzaPBY43hh3H///Xng1BFHHJFn/cXsvqqigymSf1GBYa211srH7rnnntS4ceN01lln5edHifbSrMO77747r8McnVNR9ira5mbw4MF51mBpi/LuAAB1Rcysi6oHEX8deeSR6ZtvvsmDpyIWihLrsaxMDDKPz1GJYVHuObe25s2bp9122y39/e9/L4+5YgBXTcRYAFB/SfwBACxDonOpus8L46OPPkrt2rUr3+/cufMPzjn00ENzZ1FFH3zwQZoyZUpq2bJl7uTq27dv3o/R6PNzz4oGDhyYy4SWtkmTJi3SdwIAWFSx9ExJxDvdunXLn0tVpMrKyhb6fvO659zaIua6884786CvGIg1t8SfGAsA6q9Gtf0CAADUjjXWWCNNnjy5fP/999//wTkrrrjiD47F2n1RZvT2228v74yKDqUY+R73jPKfc7tnRU2aNMkbAEBtiaVf5syZU77//PPPl3+OmXaL837zuufc2qLselR8uPHGG3O1hrkNsBJjAUD9ZcYfAEA9teuuu6ZXX3013XTTTbmkZ3WlPqsT6y1HQu+ZZ55JK6ywQho5cmQuPRUJwCgJGqVBY12al156KV188cVL/HsAACyKKGceVQvee++9PDsvypnXpfuVrLTSSnmN5d/97ndzne0HANRvEn8AAPVUzNwbNmxYGjRoUNpmm23S1ltvPV/XRXnPWNPv0ksvTZ06dUp33HFH3m/UqFHq0aNHuuSSS/Jo9D322CN3TgEA1GUxe+6EE07IsVDERPG5Lt2vokj4RaWFKPsJAFCdBmULWpicbPr06Xm9mwi2Fqbsw7xcMO7TtKSdtmmrJf4MAKjP/56z8H8nvYb0So2bNa7t1wGASsb0G1Pbr1Dnia+WnLfffjs98cQT6frrr09jx45duL+XXr1S88ZiLABqyRix1NKIsazxBwAAAAB1XKzxN2XKlDRixIjafhUAoA6T+AMAAACAOm7ixIm1/QoAwDLAGn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAizXxN3PmzMV5OwAAAAAAAGBJJP6GDBmS/5w1a1b5sf/85z9p+vTp+ViPHj0W5HYAAAAAAABAbST+Bg0alJ5++um0ySabpGnTpqWvvvoq7b///unxxx9PTZs2Tcsvv/ziei8AAAAAAABgATRakJNXXXXV1LNnz9S7d+/0s5/9LPXt2zf16dMn74fllltuQW4HAAAAAAAA1MaMvyZNmuQ/L7744nT55ZenI444IrVv3z4dc8wx+XhZWdniei8AAAAAAABgSSX+wvfff59n+EVZz6FDh6bTTjst7bTTTgt6GwAAAAAAAGBpJ/6+/fbb9Pe//z3NmjUrl/Pca6+98tp+m2++eTr99NPT1KlT0yOPPJK+/PLL/Od99923ON8RAAAAAAAAWBxr/L3zzjvp+OOPTyuttFI67LDD0tlnn53efvvt9Ktf/Sodcsgh6bzzzkstWrRIH3zwQTrppJPSN998k3bffff5uTUAAPzAiP1HpObNm9f2awAAFMuIESmJsQCg0OZrxt8666yTJk2alJo2bZpWX331XNpz4sSJqX///nm9v9/+9rdp3Lhxad11181/vvTSS0v+zQEAAAAAAIAFX+OvYcOGqUmTJumiiy7KpTwnTJiQ2rdvnw4++GCJPgAAAAAAAFhWEn9hzpw5+c+ysrJ05ZVXpo4dO6ZWrVql6667Lh9v0KDBknlLAAAAAAAAYPEl/qZOnZqmTJmSdt111/Txxx+nLl26pCFDhqTHH3+8UmIQAAAAAAAAqMOJvw022CCtuuqq6ayzzkq//vWv85p/v//979Pll1+eZs+enb7++usl96YAAAAAAADA4kn8jRkzJi233HLpsMMOKz/2y1/+Mt199935+CmnnJKPvfLKKwtyWwAAAAAAAGARNZqfk2I236abbppefvnlvD9o0KCc3GvY8P/lDb/77rt03HHHpWeffTbtsssu6emnn07rrbfeor4fAAAAAAAAsLgSf02aNEkNGjQo3x83blye6VdVlAHde++901/+8hdJPwAAAAAAAKhrib/w/fffp6+++iqtsMIKafnll0/77rtvnvm34oorpjXWWCN17tw5rbXWWnn9v/3333/JvjUAAIXW946+qXGzxrX9GgDwA2P6jantV4CF17dvSo3FWAAsQ8aIvZZY4u/dd99NHTt2zJ8j8Rc++uij9O2336YJEyakP//5z+ntt99OV1xxxQK/BAAAAAAAALCUEn8xo++ll17K6/397Gc/SyNGjEg77rhjbisrK8ulQFu1apUGDBiQ1/v7xS9+sYivBgAAAAAAACzWxF/M6otSn6X1/rbccst09913p+WWWy4n/ObMmZMTglH6c9SoUWm77bZL2267bWrbtu18vwgAAAAAAACw8BrOz0mNGjVKN998c04AXnvttenss8/Ox2+66aa08cYbpz59+qTbb789bbDBBmn99ddP/fv3T43VCwcAAAAAAIC6lfiLWX1bbLFFLul55ZVX5mMvvPBCatiwYWrTpk267rrr0mabbZbeeeed3HbxxRenH/3oR0v2zQEAAAAAAIAFS/yFk046KZ111lnps88+S//93/+dpk6dmm688cb0n//8J5f+jFKfm2++eZowYcL83hIAAAAAAABYmmv8hZYtW+b1/X73u9/l/Vjfr3nz5ql169b584ABA9IHH3yQfv7zn6fnn38+rbLKKkvyvQEAAAAAAICFmfF37LHHpmnTpqWZM2fm7fvvv0+77757uvfee3PyL9qjxGeU/PzDH/4wv7cFAAAAAAAAlmbiL9b5a9y4cd5i5t93332XPx9xxBHppptuSscdd1w+77TTTkt///vf83qAAAAAAAAAQB0r9dmiRYu8xl/JVlttlRN/BxxwQN5ijb/QvXv3NGbMmJwoBAAAAAAAAOrYjL+qtttuu0r7MQuwpGvXrov2VgAAAAAAAMDSSfwBAAAAAAAAdYfEHwAAAAAAABSAxB8AAD/w2GOPpQ4dOtT2awAAVOvdd99NDRo0WKLPEA8BAMsiiT8AgHpg++23T0OHDl3gNgCAuqhdu3Zp6tSpqb6JZGckPQEAaiLxBwAAAMAypWHDhmmVVVap7dcAAKhzJP4AAJYRMTPvsMMOS6uvvnr6xS9+kT+vvPLKafTo0Wns2LFp0003Tc2aNUtbbLFFevnll/M1AwYMyCPDH3/88Xx+fI5j82oriXu3b98+rbrqqumqq64qP17T86oriWVkOgCwpEt9lmKQmmKXcePGpZ/85CdppZVWSltvvXV66aWXytsmTpyYttlmm9SiRYu0xx57pA8++KDSs2q657PPPpu23HLLfN0+++yTpk2b9oOKCpdddlm+9t577y1vu//++1PXrl1z4vLwww9Ps2fPzsfPPvvs1L9//3TOOefkto4dO+aYK6y33nrl3zeOx+fbbrttMf+qAEARSPwBACxD3nnnndyJNHz48NS9e/e03377pTFjxuQ/o8Pp7bffTtttt106+eST8/mXX355LoMVHVxXX311/hzH5tUWPvvss3ThhRfmjqrogDrppJPS119/nebMmVPj8xZUdHRNnz690gYAsDBqil0iIbfbbrulPffcM7322mupR48e6aCDDsrXzJw5M+26665pl112SRMmTEht27ZNe++9d4535nbPL774Iu2+++55i+sihom2iv785z+nhx56KP8ZCcLw5ptv5vufcMIJOXH4zDPPpIsvvrj8mnhOxFeRqIwYbeDAgfl4nFsqbTp+/Pj8ed99963x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AAAAAACAAiX+vv7663TUUUflMpwrr7xy+fFGjRqlJk2alO83bdo0zZo1a6Hb4nio6brqDBw4ME2bNq18mzRp0mL73gAAAAAAAFCoxN8f/vCH1KNHj7TnnntWOr7qqqumKVOmlO/PmDEjLb/88gvdtsIKK+StpuuqE0nCmBVYcQMAqEvefffd8tLoS9LQoUPT9ttvv8jnAAAsqx577LHUoUOHBb5ufmKkpRXTAQDFVKcSf3/729/SqFGj0iqrrJK32D/66KPTTTfdlJ566qny88aNG5fWWmut/DkShQvTtvnmm9fYBgDAovnFL36R/vGPf9T2awAAzJdIxkVSDgBgWVenEn9PPPFEmjhxYnrhhRfy1qdPn3TOOeek999/P40dOzY9/PDD6dtvv83r//Xq1Stfs++++6bbbrstvfjii3ntvj/96U/lbfvtt1+65ppr0ocffpg+/vjjdMMNN1Rqu/DCC/M6gK+//noaOXJkeRsAAIsmKimstNJKtf0aAAAAAPVKnUr8tWnTJpdJKG3RWdSqVau8XX755WmPPfZIrVu3Tq+99lo6/fTT8zUbb7xxOuGEE/IMvpixt9xyy+VZgqF3795pp512Sl26dEkdO3ZMm266adpnn31yW6wluMYaa+Rndu3aNfXv3z917969Vr8/AECMNN9iiy3S3nvvnVq0aJF222239NFHH+W2GCC1zTbb5OMRF33wwQfzdc8YQBVxULNmzfK9X3755UolqkaPHp3at2+fy6RfddVV5dfFoKsNNtggX7fVVlulN9988wf3jsFVnTp1yhUaqn4PpT4BgMVVRjNKX0Z8UVPssv7666dHHnkk3X333alhw4bpq6++Sqeccko67rjj5hoPDRgwIN/78ccfT4cddlj+HMcqVoj6yU9+kvuott566/TSSy9Veq+a4qianhe++eabtP/+++d7Rkz3ySefzNfv8uyzz6Ytt9wyx4LRvzVt2rSF+n0BgGKrU4m/qiKgi4RciKArEn7Dhg1LEyZMyAnAkvPOOy8HYjFr71//+ldevy9EsHbLLbfk4O3ee+/NwVipRnqs2ffQQw+le+65J880vPrqq2vpW1JywbhPl/gGAMuC6NSJDqaogBAxS8RBUdlg1113TbvsskuOhdq2bZuTg3PmzJnrvaI9Kh1E59Dbb7+dtttuu3TyySeXt3/22We5CkLESlFp4aSTTkpff/11bjv44INzB1jEYJEAPOOMMyrde9asWWmvvfZKhx9+eDr00EMX6rvOnj07V2CouAEA1KSm2CWSbG+88UZ65ZVX8oCliF9if7PNNptrPBQDzadOnZqTetE3FJ/jWIjEWgzC2nPPPfP9YkmZgw46aJ7vMq/4K5ae6datW47pIkl57LHHzvN7f/HFF2n33XfPW1wXMVM8ryZiLACovxqlZUjM2outOtEZFVt1IjCrTgRX22677WJ9RwCARRUVCU499dQ8YOnss8/Oscxdd92VVl555XTWWWflc6644oq0+uqrp2eeeSb17NlzrveLAVItW7bMnUTRaRQdVyWRULz22mvThhtumKskxKj4mMUXI9djMFWUWY8R7Ndff3367rvvyq/7/vvv04EHHpg7vP77v/97ob/r4MGD06BBgxb6egCgfqkpdikl/qZMmZIHJr366qvlib+5xUMR78TWqFGjPDtvlVVWKX9WDBaPa0pVpyIOi8FZ83qXGKA1t/jrxz/+cfr973+f+6Ui1ot7RmwVVaxqEu/SuHHj/A4RI0Yi8ZBDDqnxfDEWANRfdXrGHwBAfU38laoURCnz6AiaPHlypQFQTZs2zW2xFvLcRIdSjFqPc4855pg8ij3uVxIdUjHivLQuXygrK8t/3nrrrenRRx/N1+6www651GjF8lUhOshGjRq10N914MCBeTR9aZs0adJC3wsAKKaoMjCv2KWU+ItS6DHDLkpyfvjhhzkpN694qCYRl1SMv+LZBxxwwDzfZV7PiwFWcU5o165dHlz16adzr1IU3yuSmvHMSE727ds375cqNVQlxgKA+kviDwCgjolkXin5Fp00MQI9koHvvPNOpfJNkQyMjqN5rZEzZMiQvK5MzA781a9+Vam9efPmNXawRSdUlEaPjqhYW7BUgj107tw53X777XmUenQszU/nWXWilGm8Q8UNAKjfYgBUxXLmzz//fPnnmmKFSPxFmc+4Lmbf3XfffWnttdfOcdS84qEQibhS/FUSM/fefffdSjP8Ntpoo/S///u/c32XeT0vEpKlZ0U8FzP9Vltttbn+JhELdu/ePZeCj238+PF5VmHMAqyOGAsA6i+JPwCAOiY6gKI8UyT6okRTrOUX24wZM/L+e++9l44//vjcqVVTSfOSuCZEiamYpXfiiSf+oFOrOpH069WrV15f+ZNPPsnXVCz1GSPYoyzWvvvum0e433jjjYvhmwMA/F+c8dFHH+WYJwYjlUqdz00kzmL2W+vWrXM59DfffLO8zOf8xEMxqOmRRx7Jz3344YfzoKZY2+/zzz/PcVnMuDv33HPz8XjG3MzreTGw6+KLL85JxYjt4jmRoJybOCcGh0UiMWKwkSNH5vUH5yeuAwDqF4k/AIA6Jtbsi06dGFH+zTffpKuuuiqttNJK6YEHHkgPPvhg6tq1a+74iRKbpTJRNYkOodii42vAgAHpiCOOyInFWH9mbmJUeJT6jA6u6AgbM2ZMuu6666odkX/OOefkmX9fffXVIn93AICYqXfCCSekrbfeOlcdiM/zI2b9rbPOOvlzDJAqJf7mJx6KdfzeeuutXE0hzomZgy1atEj3339/Gj16dFp//fXT008/ndddLpVkr8m8nhcDt5588slcJvTLL79M11xzzTy/W5T3jPe49NJLU6dOndIdd9yR9+eVMAQA6p8GZYYGLZTp06fnADDqpC+JcgkXjJt7bffF4bRNW9XKs2vruXN7NgD105L+93xhDB06NG9RIqo+/530GtIrNW5WfekqAKhLxvQbU9uvUKfUxfiKCn8vvXql5jWUBwWAemXMmMLGWGb8AQAAAAAAQAFI/AEA1CH9+/evt7P9AAAAAFg0En8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQAI1q+wUAAKCqEfuPSM2bN6/t1wAAKJYRI1ISYwFAoZnxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAF0Ki2XwAAAKrqe0ff1LhZ49p+DQBYYsb0G1Pbr0B91LdvSo3FWABQyZhixWVm/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBANQTM2bMSHvttVdq1qxZWmONNdKzzz47z2see+yx1KFDhwVuAwBg8Tv77LNT//79a/s1AIA6rFFtvwAAAEvH0KFD00cffZTeeuut9MUXX6RVV111ke63zTbbpAkTJiy29wMAAABg0Uj8AQDUE5999lnq2rVr+vGPf5y3RdWoUaPUvHnzxfJuAAAAACw6pT4BAArutttuSw0aNEiDBg1KN910U/683nrr5bYo97nlllumFi1apH322SdNmzZtvu9bXanP8ePHpxVXXDG99957ef/QQw9N/fr1W8zfCABg6Xn44YfTBhtskMulb7XVVunNN9/Mx++///48qGqVVVZJhx9+eJo9e3b5NX/5y19Su3bt0sorr5xjrJkzZ5a3DR8+PP3oRz9KnTp1SieffHIuwR4xVPjDH/6QWrdunVq2bJnv+f3339fCNwYAlmUSfwAABbfvvvumqVOnplNPPTUn4eJzJPyi3Ofuu++etyjZOX369HTSSSct0rM23njj9Ktf/SqdeeaZaeLEiWnUqFHp0ksvrfH86CCL51bcAADqkoMPPjgddthh6bXXXssJwDPOOCMn//bee+90wgkn5LjqmWeeSRdffHE+/6WXXkq//vWv05AhQ9LLL7+cqy5cc801uS3isCOPPDL97W9/y+v1DRs2LL3wwgtp3XXXTffee2+66KKL8p/PPfdcevLJJ9Pf//73hXpnMRYA1F8SfwAABde4ceM8Er1p06Zp+eWXz59j9Pk999yT284666zUvn37POJ89OjRi/y8GKn+0EMPpf79++eOsTXXXLPGcwcPHpxnG5a2tm3bLvLzAQAWpxVWWCF9++23eX3k66+/PldQuP3229Mmm2ySZ+V16dIlHX300eVxVOfOndP//u//5tmBr7/+er42kobhjTfeyHHYjjvumA444IB8XlRjiDjtpz/9aXr//fdTx44d0yuvvJLPL123oMRYAFB/SfwBANRTH3zwQZoyZUouJRXJwL59++b9r7/+epHuG51Lca+YRRiz/+Zm4MCBubxoaZs0adIiPRsAYHG79dZb06OPPprWWmuttMMOO+SqBhFHjRs3LsdQscUAqkjaha+++iodccQRuST6+eefn5Zbbrnykp1xLGb9vfXWW+npp5/OycQo7Rk+/fTTXBZ0/fXXT9dee21OBi5sqU8xFgDUX41q+wUAAKgdbdq0Sd27d88j1kNZWVnuGIpZgIsiOr1uvvnmtPXWW+fZf3Mr9dmkSZO8AQDURbNmzUrfffddrmYQf0alhKhqELP1evfuXR7nRIIuzg1XXHFFjqk++uijHFf97ne/S5988klui+oLsdbyhhtumBOCN954Y2rY8P/G5ce9Y2beI488kmcBxkCqhSXGAoD6y4w/AIB6as8998xJuliTJkpYjRw5Mu222245AbgojjnmmFz26pZbbslr28S6NQAAy6JI9vXq1SuvxRfJu4iT4tiBBx6YnnjiiVy6MxJsV155ZV4HMMyYMSPNmTMnV1KItfxi9l4pvrrtttvyzMGYLRizBism9+K6SCBG+c+rrroq3XnnnYsclwEA9Y/EHwBAPRVlqWItmhip3qlTp3THHXfk/UaNFr4oRCQPn3322by2X8wojBHuRx11VO78AgBY1jRv3jyX+jz33HPz2n1jxoxJ1113Xf4cFQ5OPPHEtPbaa+cS58OHD8/X/OY3v0mzZ89O66yzTp7RF6XPSwOh9thjjzR27Ni8/t9qq62WVl999TxQKkT8FPeJGYGPPfZYTi5GghAAYEE0KDN0aKFMnz49r18TpRsiCFzcLhj3aVrSTtu0Va08u7aeO7dnA1A/Lel/z1n4v5NeQ3qlxs0WreQoANRlY/qNSUUkvpq7X/7yl6l9+/bpuOOOy+U8I6kYswmff/75pfP30qtXar6IZd0BoHDGjClUjGXGHwAAAAAsBQcddFCeNdixY8fUoUOHPEvwoosuqu3XAgAKZOHrOAEAAAAA8y3WU44NAGBJMeMPAAAAAAAACkDiDwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACkDiDwAAAAAAAAqgUW2/ANQFF4z7dIk/47RNWy3xZwAAAAAAAPWXGX8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUACNavsFAACgqhH7j0jNmzev7dcAACiWESNSEmMBQKGZ8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABSDxBwAAAAAAAAUg8QcAAAAAAAAFIPEHAAAAAAAABdCotl8AAACq6ntH39S4WePafg0AWCaN6Temtl+Buqpv35Qai7EAYLEaU7diLzP+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoAAk/gAAAAAAAKAAJP4AAAAAAACgACT+AAAAAAAAoADqZOJv1KhRqVOnTqlRo0Zpk002Sa+88ko+PnHixNSjR4/UsmXLdMopp6SysrLyax5//PG0/vrrp1atWqXLLrus0v1GjhyZ2rdvn9Zcc800fPjwSm1XX311at26dX7eI488spS+IQAAAAAAABQ88ffWW2+lww47LF1wwQXpww8/TOuss046/PDD0+zZs1Pv3r1T9+7d03PPPZdefvnlNHTo0HzNlClTUp8+fVK/fv3SU089lYYNG5YeffTR8mThQQcdlM4444z0wAMPpDPPPDO99tpruS32Tz755HT99denW2+9NT/ns88+q9XvDwAAAAAAAIVI/MXsvkj69e3bN8/E+/Wvf53GjRuX7rvvvjRt2rQ8m69z587p/PPPTzfccEO+JhJ9MZsvkntdunTJyb1S25AhQ9IOO+yQk3pdu3ZNxx57bLrlllty27XXXpsOPfTQtPfee6etttoq/3nXXXfV6vcHAAAAAACAQiT+9tprr3TkkUeW78fsvEjmjR8/PvXs2TM1a9YsH+/WrVue9ReiLZJ7DRo0yPtbbLFFev7558vbdtxxx/L7zW8bAAAAAAAALEvqXOKvom+++SZdeumlacCAAWn69OmpY8eO5W2R5FtuueXS1KlTf9DWvHnzNHny5Px5YduqilKjcX7FDQAAAAAAAOqKOp34O+uss9KKK66Yy3Q2atQoNWnSpFJ706ZN06xZs37QVjoeFratqsGDB6cWLVqUb23btl3s3xcAAAAAAAAWVqNURz3yyCPp6quvTk8//XRq3LhxWnXVVdPEiRMrnTNjxoy0/PLL57YpU6b84HhY2LaqBg4cmE488cTy/ZjxJ/nH4nDBuE+X6P1P27TVEr0/AMX27rvv5goJZWVlC9QGAAAAwNJXJ2f8vfPOO6lfv3458bfBBhvkYz169EhPPfVUpXOi/GYk76q2jRs3Lq211lrVXje/bVXFzMAoBVpxAwCoz9q1a5fLrgMAAABQN9S5xN9XX32V9tprr7T33nunn//852nmzJl523bbbfMsuxtvvDGfd/7556edd945r/PXp0+fNHbs2PTwww+nb7/9Nl100UWpV69e+bx999033XbbbenFF1/M9/nTn/5U3rbffvula665Jn344Yfp448/TjfccEN5GwAAc9ewYcO0yiqr1PZrAAAAAFBXE38PPvhgevnll9Nf/vKXtPLKK5dvkZwbMmRIOvbYY1OrVq3SqFGj0oUXXpivif3LL7887bHHHql169bptddeS6effnpu23jjjdMJJ5yQNt988zybLxKFRx99dG7r3bt32mmnnVKXLl1ymapNN9007bPPPrX6/QEAFsbQoUPTFltskQdPxXrEu+22W/roo49yWwyQijinWbNm+ZyItcJjjz2WOnToUOk+DRo0yCU850ecF+dX9eyzz6Ytt9wyv0fEVtOmTVss3xEAoAhqisFWWGGFvPTN3XffnQdYxeD4U045JR133HH5HDEWALBMJv6isyrWiam6RUAUM/veeuutdNNNN6VXXnmlvAxoGDBgQE74DRs2LE2YMCEnAEvOO++8XMZz5MiR6V//+lcOpEpB1S233JIef/zxdO+996bRo0dX23kFALAsiM6gn/zkJ+mFF17IZcojPpozZ06uchCdQ2+//Xbabrvt0sknn7zE3uGLL75Iu+++e94iJouKDSeddFKN50fp9jin4gYAUB9F5as33ngj93lttdVWuZ8r9jfbbDMxFgAw3xqlZcyPfvSjtOeee1bbFrP2YqtOJAkrJgorirX+AACWdW3atEmnnnpqHsh09tln5xjnu+++ywOgWrZsmTuJotMoOpGWlHvuuSc1btw4nXXWWfk9Isl4yCGH1Hj+4MGD06BBg5bY+wAALCuiQkMk+qZMmZKXwXn11VfLE39iLABgmZ3xBwDAwif+StULosT5999/n6ZOnZpLosf+Mccck/fjeHVmzZq1yO/wwQcf5M6qSDTG+n99+/bN+19//XW15w8cODCXqSptkyZNWuR3AABYlpRisIifItEX8VRUaXjppZfy0jcbbrihGAsAKO6MPwAAqvf+++/nEumR/IvOnUaNGqWJEyfmdZKjZNQaa6yRy5s///zz+fw4L0qBlpSOL2rysXv37un222/P+/E+0dkUI9SrEyVJYwMAqC9qisFixt9FF12UB2x16dIlHX/88WnttdfOMZ0YCwCYX2b8AQAUxOTJk3NZp3feeSeXdoq1k0sjyKPE59ixY9OJJ56YO4pCdCp99NFH6b333svnRemoRRUl2SMB+cwzz+R1lWON5d122638mQAA9V1NMdhqq62WZ/C1bt06rb766unNN9/MZT6DGAsAmF8SfwAABdGzZ8/cGbTRRhulb775Jl111VW5Qyi26DQaMGBAOuKII3KC8OOPP84jyE844YS09dZbp2222SZ/XlRRemr06NHp0ksvTZ06dUp33HFH3o+R6gAApLnGYDHrb5111smfY9ZfKfEnxgIA5pfoAACgIKKc09133/2D48OGDau0f9JJJ5V/vuSSS/JWUnXUeIcOHWocSV5TW48ePdK///3vhfoOAAD1QU0x2KhRo8qPPfvss5WuEWMBAPPDjD8AAAAAAAAoAIk/AIAC6N+/f3rsscdq+zUAAAAAqEUSfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAEn8AAAAAAABQABJ/AAAAAAAAUAASfwAAAAAAAFAAjWr7BQAAoKoR+49IzZs3r+3XAAAolhEjUhJjAUChSfxBPXXBuE+X+DNO27TVEn8GAAAAAADwf5T6BAAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACaFTbLwDUPxeM+3SJP+O0TVst8WcAAAAAAEBdYsYfAAAAAAAAFIAZfwAA1Dl97+ibGjdrXNuvAQCFNKbfmNp+BWpL374pNRZjAcASMaZuxFgSf0C9sqTLjCoxCgAAAABAbVHqEwAAAAAAAApA4g8AAAAAAAAKQOIPAAAAAAAACsAafwAFWFswWF8QAAAAAKB+k/gDKLjaTDou6WdLdgIAAAAA/D9KfQIAAAAAAEABmPEHQOEorQoAAAAA1Edm/AEAAAAAAEABSPwBAAAAAABAAUj8AQAAAAAAQAFI/AEAAAAAAEABSPwBAAAAAABAAUj8AQAwT4899ljq0KHDPI8BAJDS0KFD0/bbb79Q17777rupQYMGC9wGABAa+RkAYPG5YNynS/T+p23aaoneHxbENttskyZMmFDbrwEAAADA/0/iDwAKoraSjkv6uXN7NrWrUaNGqXnz5rX9GgAAAAD8/5T6BACo55599tm05ZZbphYtWqR99tknTZs2LR8fMmRIatOmTd4efPDBH1xXU6nP+++/P3Xt2jWtssoq6fDDD0+zZ89eKt8DAKAu+eabb9L++++fVlpppbTHHnukTz75JB+fOHFirpwQsVcc/+CDD2r7VQGAApH4AwCox7744ou0++675y3Kdk6fPj2ddNJJafz48enYY49NV199dbrvvvvSbbfdNl/3e/PNN9Pee++dTjjhhJxQfOaZZ9LFF19c4/mRFIxnVtwAAIrgqaeeSt26dcsxVsOGDXNsNXPmzLTrrrumXXbZJR9v27Ztjp3mzJmzWJ8txgKA+kviDwCgHrvnnntS48aN01lnnZXat2+fTj755DR69Oh09913p5133jl3RMXsvTg+P26//fa0ySab5Jl+Xbp0SUcffXS+X00GDx6cR7uXtuj8AgAogh//+Mfp97//ferUqVM6++yz01133ZVGjRqVVl555fLY64orrkivv/56Hiy1OImxAKD+ssYfAEA9FqWlpkyZklq2bJn3Y7T5jBkz0kcffZTatWtXfl7nzp3n+37jxo3LZT7Dd999l8tb1WTgwIHpxBNPLN+P0eg6pgCAIojEXsz0CxFXRVwUsVLHjh3Lz2natGlaa6210vvvv5969uy52J4txgKA+kviDwCgHov1+7p3755n6oWysrK8xt/f//739OKLL5afF51R83u/3r17p0svvTTvf//992nWrFk1nt+kSZO8AQAUzYcffphjqwYNGqTJkyen5ZZbLif53nnnnUolOaMtkoSLkxgLAOovpT4BAOqxPffcMyf1orzUCiuskEaOHJl222231KdPn/TAAw+ke++9N7300ktzXaevogMPPDA98cQT6Y033sidTVdeeWU67LDDlvj3AACoayZNmpRjqHfffTcNGjQox10/+9nPcnWF2H/vvffS8ccfn8uj9+jRo7ZfFwAoCIk/AIB6LEpyxhp8MUMv1p+544478n50Pl1yySV5rb499tgj7b777vN1vygJevPNN+fSUmuvvXaaMGFCGj58+BL/HgAAdU3EU08++WTq1q1b+vLLL9M111yTS6DH4KoHH3wwr6McA7Bi3b9SSVAAgEWl1CcAQD0XnVL//ve/f3D8mGOOyVvJFVdcUal9++23zyPYq4oZg7EBANRX/fv3z1t1IuE3duzYGq/t0KFDLhG6oG0AAMFwIgAAAAAAACgAiT8AAAAAAAAoAIk/AAAAAAAAKACJPwAAAAAAACgAiT8AAAAAAAAoAIk/AAAAAAAAKACJPwAAAAAAACgAiT8AAAAAAAAoAIk/AAAAAAAAKACJPwAAAAAAACgAiT8AAAAAAAAoAIk/AAAAAAAAKACJPwAAAAAAACiARrX9AgAAUNWI/Uek5s2b1/ZrAAAUy4gRKYmxAKDQzPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKQ+AMAAAAAAIACkPgDAAAAAACAApD4AwAAAAAAgAKo94m/iRMnph49eqSWLVumU045JZWVldX2KwEAAAAAAMACq9eJv9mzZ6fevXun7t27p+eeey69/PLLaejQobX9WgAAAAAAALDA6nXi77777kvTpk1Ll112WercuXM6//zz0w033FDbrwUAAAAAAAALrFGqx8aPH5969uyZmjVrlve7deuWZ/3VNDswtpJIGIbp06cvkXf7euaMtKRNn758rTy7tp5bX59dH79zbT67Pn7n2ny271w3nl2bv/ei3/f//h1X6rvuKP1dLKkYCwBYssRXdZMYCwDqT4zVoKweR2InnXRS+vrrr9PVV19dfmz11VdPr7/+el7zr6Kzzz47DRo0qBbeEgBY0iZNmpTatGlT269BSuntt9/OlRgAgGWb+KpuEWMBQP2Jser1jL9GjRqlJk2aVDrWtGnTNGvWrB8k/gYOHJhOPPHE8v05c+akzz//PK222mqpQYMGqbYzvW3bts1/4c2bN/fsgj63vj67Pn7n2nx2ffzOtfns+vida/vZVcX4pxkzZqQ111yzVt+D/2fVVVfNf77//vupRYsWtf069Upd+u9mfeO3rz1++9rjty/uby++qpvEWLXL/+bVPn8HtcvvX/v8HSz7v/+CxFiN6nvQM3HixErH4odbfvkflhOLBGHVJOEqq6yS6pL4D0xt/Ze2Pj67Pn7n2nx2ffzOtfns+vida/PZ9fE71/azK9LxUbc0bNiw/O+lLvznoz6qK//drI/89rXHb197/PbF/O3FV3WPGKtu8L95tc/fQe3y+9c+fwfL9u8/vzHW//2rX0/16NEjPfXUU+X777zzTl7HrzQKCgAAAP6/9u4Ezqr5/+P4N1JRpIXQql8ILdoXJVRo0WapJESrSovKEiq0IkUKpUVakBZSaY/+xa9NmyLtSlEprRLn/3h/fo9zH7dpombOvbe583o+HvOYuXfuzDn3e77nzJnzPp/vFwAAAABSilQd/N1yyy1WYjlixAh73KtXL1elShV3/vnnx3rVAAAAAAAAAAAAgLOSNrXP8Tds2DDXsGFD17lzZxv2YP78+S6l0RCk3bp1O2UoUpYdX8tNrctOje85lstOje85lstOje851svGuY/+ETu0fezQ9rFD28cObR87tH3qxHaPLdo/9tgGsUX7xx7bIHW1fxpPMwKmcrt27XLLli1zZcuWddmyZYv16gAAAAAAAAAAAABnjeAPAAAAAAAAAAAAiAOpeo4/AAAAAAAAAAAAIF4Q/AEAAAAAAAAAAABxgOAPQIrFSMVA/GG/BgAAAAAAAJKO4A/AWTty5Ij78ssvY70a7ujRo/b577//jvWqAAgI+3X8W7NmjStVqpTLkiWL69y58xmFvRMmTHB58+Z1V111lRs3blxU1jMeJaXte/To4bJmzerSp0/v6tat6w4ePBiVdY03SWl73/79+92VV17ptmzZEtF1jFdJbXv9HSpfvrx77bXXIr6O8eps217fb9WqlR1zLr30UvfII4+Ezgtw9vbs2eOuvvrqMz52LFiwwF1//fUue/bsrn///hFfPwSPc6zY4jwr9jjfii3OuWKPc6/Y23MOnX8R/CGucKE4OvTPwV133eWmTp0as3X47bff7EA6bdo0d95557HtU4G//vor1qsQ92Jdbcd+Hf/++OMPd/fdd7sSJUq4pUuXuu+++86NHDnyX/95adSokXv++efdF1984V544QX3/fffR22dU3Pbjxkzxj5mzJjh1q5d69atW+f69OkTtXVOzW0fTv+079q1K6LrGK+S0/Zvv/22O3DggHviiScivp7xKCltP3r0aDu+r1ixwn311Vd23Ondu3fU1jme6KJTzZo1z/ii06+//upq1arlGjZs6BYvXmzH/nnz5kV8PREczrFii/Os2ON8K7Y454o9zr1ib8+5dv7lIcU7ceKEdy76+++/E/06Uv7666/Q17/99psXTdF4f+eSffv2ef379/fy5cvnffrppzFbj27dunkZMmTwZs6ceUofiDfR3p/O9rgTzXVasmRJVJYZ7XZW/43F8XzTpk3e22+/fc70r9S0X6dGkyZN8rJkyUPnS0gAAC7DSURBVOIdPnzYHn/77bfezTff/I8/065d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",
      "text/plain": [
       "<Figure size 1800x1200 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "=\n",
      "数据统计分析\n",
      "============================================================\n",
      "训练集平均文本长度: 118.59 ± 89.57\n",
      "测试集平均文本长度: 115.93 ± 87.31\n",
      "词汇表大小: 71347\n",
      "词汇总出现次数: 2964842\n",
      "平均词频: 41.56\n"
     ]
    }
   ],
   "source": [
    "def plot_data_distribution():\n",
    "    \"\"\"绘制数据分布图\"\"\"\n",
    "    fig, axes = plt.subplots(2, 3, figsize=(18, 12))\n",
    "\n",
    "    # 1. 类别分布\n",
    "    train_labels_array = np.array(train_labels)\n",
    "    test_labels_array = np.array(test_labels)\n",
    "\n",
    "    axes[0, 0].bar(\n",
    "        [\"负面\", \"正面\"],\n",
    "        [sum(train_labels_array == 0), sum(train_labels_array == 1)],\n",
    "        color=[\"red\", \"green\"],\n",
    "        alpha=0.7,\n",
    "    )\n",
    "    axes[0, 0].set_title(\"训练集类别分布\")\n",
    "    axes[0, 0].set_ylabel(\"样本数量\")\n",
    "\n",
    "    axes[0, 1].bar(\n",
    "        [\"负面\", \"正面\"],\n",
    "        [sum(test_labels_array == 0), sum(test_labels_array == 1)],\n",
    "        color=[\"red\", \"green\"],\n",
    "        alpha=0.7,\n",
    "    )\n",
    "    axes[0, 1].set_title(\"测试集类别分布\")\n",
    "    axes[0, 1].set_ylabel(\"样本数量\")\n",
    "\n",
    "    # 2. 文本长度分布\n",
    "    train_lengths = [len(tokens) for tokens in train_tokens]\n",
    "    test_lengths = [len(tokens) for tokens in test_tokens]\n",
    "\n",
    "    axes[0, 2].hist(train_lengths, bins=50, alpha=0.7, label=\"训练集\", color=\"blue\")\n",
    "    axes[0, 2].hist(test_lengths, bins=50, alpha=0.7, label=\"测试集\", color=\"red\")\n",
    "    axes[0, 2].set_title(\"文本长度分布\")\n",
    "    axes[0, 2].set_xlabel(\"词汇数量\")\n",
    "    axes[0, 2].set_ylabel(\"样本数量\")\n",
    "    axes[0, 2].legend()\n",
    "\n",
    "    # 3. 词频统计\n",
    "    all_words = []\n",
    "    for tokens in train_tokens:\n",
    "        all_words.extend(tokens)\n",
    "\n",
    "    word_freq = Counter(all_words)\n",
    "    top_words = word_freq.most_common(15)\n",
    "    words, counts = zip(*top_words)\n",
    "\n",
    "    axes[1, 0].bar(range(len(words)), counts, color=\"skyblue\")\n",
    "    axes[1, 0].set_title(\"Top-15 高频词汇\")\n",
    "    axes[1, 0].set_xlabel(\"词汇排名\")\n",
    "    axes[1, 0].set_ylabel(\"频率\")\n",
    "    axes[1, 0].set_xticks(range(len(words)))\n",
    "    axes[1, 0].set_xticklabels(words, rotation=45)\n",
    "\n",
    "    # 4. 正负面词汇对比\n",
    "    positive_words = []\n",
    "    negative_words = []\n",
    "\n",
    "    for i, label in enumerate(train_labels):\n",
    "        if label == 1:\n",
    "            positive_words.extend(train_tokens[i])\n",
    "        else:\n",
    "            negative_words.extend(train_tokens[i])\n",
    "\n",
    "    pos_freq = Counter(positive_words)\n",
    "    neg_freq = Counter(negative_words)\n",
    "\n",
    "    # 计算词汇情感倾向\n",
    "    sentiment_scores = {}\n",
    "    all_unique_words = set(positive_words) | set(negative_words)\n",
    "\n",
    "    for word in all_unique_words:\n",
    "        pos_count = pos_freq.get(word, 0)\n",
    "        neg_count = neg_freq.get(word, 0)\n",
    "        total_count = pos_count + neg_count\n",
    "\n",
    "        if total_count >= 100:  # 只考虑高频词\n",
    "            sentiment_score = (pos_count - neg_count) / total_count\n",
    "            sentiment_scores[word] = sentiment_score\n",
    "\n",
    "    # 最积极和最消极的词汇\n",
    "    most_positive = sorted(sentiment_scores.items(), key=lambda x: x[1], reverse=True)[\n",
    "        :10\n",
    "    ]\n",
    "    most_negative = sorted(sentiment_scores.items(), key=lambda x: x[1])[:10]\n",
    "\n",
    "    pos_words, pos_scores = zip(*most_positive)\n",
    "    neg_words, neg_scores = zip(*most_negative)\n",
    "\n",
    "    axes[1, 1].barh(range(len(pos_words)), pos_scores, color=\"green\", alpha=0.7)\n",
    "    axes[1, 1].set_title(\"最积极倾向词汇\")\n",
    "    axes[1, 1].set_yticks(range(len(pos_words)))\n",
    "    axes[1, 1].set_yticklabels(pos_words)\n",
    "\n",
    "    axes[1, 2].barh(\n",
    "        range(len(neg_words)),\n",
    "        [abs(score) for score in neg_scores],\n",
    "        color=\"red\",\n",
    "        alpha=0.7,\n",
    "    )\n",
    "    axes[1, 2].set_title(\"最消极倾向词汇\")\n",
    "    axes[1, 2].set_yticks(range(len(neg_words)))\n",
    "    axes[1, 2].set_yticklabels(neg_words)\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "    # 打印统计信息\n",
    "    print(\"\\n=\" * 60)\n",
    "    print(\"数据统计分析\")\n",
    "    print(\"=\" * 60)\n",
    "    print(\n",
    "        f\"训练集平均文本长度: {np.mean(train_lengths):.2f} ± {np.std(train_lengths):.2f}\"\n",
    "    )\n",
    "    print(\n",
    "        f\"测试集平均文本长度: {np.mean(test_lengths):.2f} ± {np.std(test_lengths):.2f}\"\n",
    "    )\n",
    "    print(f\"词汇表大小: {len(word_freq)}\")\n",
    "    print(f\"词汇总出现次数: {sum(word_freq.values())}\")\n",
    "    print(f\"平均词频: {sum(word_freq.values()) / len(word_freq):.2f}\")\n",
    "\n",
    "\n",
    "plot_data_distribution()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "30129f5a",
   "metadata": {},
   "source": [
    "# 3. 特征工程\n",
    "\n",
    "## 3.1 TF-IDF特征提取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e180f692",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TF-IDF特征提取完成！\n",
      "特征维度: (25000, 5000)\n",
      "稀疏度: 98.37%\n",
      "\n",
      "特征词汇示例: ['abandoned' 'abc' 'abilities' 'ability' 'able' 'absence' 'absolute'\n",
      " 'absolutely' 'absolutely nothing' 'absurd' 'abuse' 'abysmal' 'academy'\n",
      " 'academy award' 'accent' 'accents' 'accept' 'acceptable' 'accepted'\n",
      " 'accident']\n",
      "PCA降维完成！\n",
      "原始维度: 5000\n",
      "降维后维度: 3901\n",
      "保留方差比例: 0.9500\n",
      "Word2Vec特征创建完成！\n",
      "词汇表大小: 45065\n",
      "特征维度: (25000, 300)\n",
      "零向量比例: 0.00%\n",
      "\n",
      "所有特征集合准备完成，可以开始模型训练！\n",
      "============================================================\n",
      "开始机器学习模型训练与评估\n",
      "============================================================\n",
      "\n",
      "正在使用 TF-IDF 特征进行训练...\n",
      "----------------------------------------\n",
      "训练 Logistic Regression...\n",
      "  最佳参数: {'C': 1, 'solver': 'lbfgs'}\n",
      "  CV得分: 0.8575\n",
      "  测试准确率: 0.8817\n",
      "  AUC: 0.9525\n",
      "  训练时间: 22.34秒\n",
      "\n",
      "训练 SVM...\n",
      "  最佳参数: {'C': 1, 'gamma': 'auto', 'kernel': 'rbf'}\n",
      "  CV得分: 0.6814\n",
      "  测试准确率: 0.6706\n",
      "  AUC: 0.7350\n",
      "  训练时间: 220.82秒\n",
      "\n",
      "训练 Random Forest...\n",
      "  最佳参数: {'max_depth': None, 'min_samples_split': 5, 'n_estimators': 200}\n",
      "  CV得分: 0.8431\n",
      "  测试准确率: 0.8499\n",
      "  AUC: 0.9284\n",
      "  训练时间: 260.47秒\n",
      "\n",
      "训练 Decision Tree...\n",
      "  最佳参数: {'max_depth': 20, 'min_samples_leaf': 4, 'min_samples_split': 2}\n",
      "  CV得分: 0.7270\n",
      "  测试准确率: 0.7325\n",
      "  AUC: 0.7691\n",
      "  训练时间: 397.61秒\n",
      "\n",
      "训练 KNN...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  File \"d:\\桌面\\shit-code\\.venv\\lib\\site-packages\\joblib\\externals\\loky\\backend\\context.py\", line 257, in _count_physical_cores\n",
      "    cpu_info = subprocess.run(\n",
      "  File \"C:\\Users\\xiaof\\AppData\\Roaming\\uv\\python\\cpython-3.10.16-windows-x86_64-none\\lib\\subprocess.py\", line 503, in run\n",
      "    with Popen(*popenargs, **kwargs) as process:\n",
      "  File \"C:\\Users\\xiaof\\AppData\\Roaming\\uv\\python\\cpython-3.10.16-windows-x86_64-none\\lib\\subprocess.py\", line 971, in __init__\n",
      "    self._execute_child(args, executable, preexec_fn, close_fds,\n",
      "  File \"C:\\Users\\xiaof\\AppData\\Roaming\\uv\\python\\cpython-3.10.16-windows-x86_64-none\\lib\\subprocess.py\", line 1456, in _execute_child\n",
      "    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  最佳参数: {'metric': 'euclidean', 'n_neighbors': 9, 'weights': 'distance'}\n",
      "  CV得分: 0.6095\n",
      "  测试准确率: 0.6723\n",
      "  AUC: 0.7386\n",
      "  训练时间: 2848.93秒\n",
      "\n",
      "训练 Naive Bayes...\n",
      "  最佳参数: {'alpha': 2.0}\n",
      "  CV得分: 0.8314\n",
      "  测试准确率: 0.8524\n",
      "  AUC: 0.9278\n",
      "  训练时间: 5.17秒\n",
      "\n",
      "\n",
      "正在使用 PCA 特征进行训练...\n",
      "----------------------------------------\n",
      "训练 Logistic Regression...\n",
      "  最佳参数: {'C': 1, 'solver': 'liblinear'}\n",
      "  CV得分: 0.8577\n",
      "  测试准确率: 0.8823\n",
      "  AUC: 0.9524\n",
      "  训练时间: 44.70秒\n",
      "\n",
      "训练 SVM...\n",
      "  最佳参数: {'C': 1, 'gamma': 'auto', 'kernel': 'rbf'}\n",
      "  CV得分: 0.6625\n",
      "  测试准确率: 0.6906\n",
      "  AUC: 0.7603\n",
      "  训练时间: 221.31秒\n",
      "\n",
      "训练 Random Forest...\n",
      "  最佳参数: {'max_depth': 10, 'min_samples_split': 2, 'n_estimators': 200}\n",
      "  CV得分: 0.7731\n",
      "  测试准确率: 0.7774\n",
      "  AUC: 0.8661\n",
      "  训练时间: 655.68秒\n",
      "\n",
      "训练 Decision Tree...\n",
      "  最佳参数: {'max_depth': 10, 'min_samples_leaf': 1, 'min_samples_split': 5}\n",
      "  CV得分: 0.7034\n",
      "  测试准确率: 0.7115\n",
      "  AUC: 0.7290\n",
      "  训练时间: 1244.60秒\n",
      "\n",
      "训练 KNN...\n",
      "  最佳参数: {'metric': 'euclidean', 'n_neighbors': 9, 'weights': 'distance'}\n",
      "  CV得分: 0.6125\n",
      "  测试准确率: 0.6729\n",
      "  AUC: 0.7420\n",
      "  训练时间: 1923.03秒\n",
      "\n",
      "训练 Naive Bayes...\n",
      "  最佳参数: {'alpha': 2.0}\n",
      "  CV得分: 0.5913\n",
      "  测试准确率: 0.5514\n",
      "  AUC: 0.5962\n",
      "  训练时间: 5.34秒\n",
      "\n",
      "\n",
      "正在使用 Word2Vec 特征进行训练...\n",
      "----------------------------------------\n",
      "训练 Logistic Regression...\n",
      "  最佳参数: {'C': 10, 'solver': 'liblinear'}\n",
      "  CV得分: 0.8467\n",
      "  测试准确率: 0.8504\n",
      "  AUC: 0.9262\n",
      "  训练时间: 13.23秒\n",
      "\n",
      "训练 SVM...\n",
      "  最佳参数: {'C': 1, 'gamma': 'auto', 'kernel': 'rbf'}\n",
      "  CV得分: 0.5098\n",
      "  测试准确率: 0.5090\n",
      "  AUC: 0.6667\n",
      "  训练时间: 16.55秒\n",
      "\n",
      "训练 Random Forest...\n",
      "  最佳参数: {'max_depth': 20, 'min_samples_split': 2, 'n_estimators': 200}\n",
      "  CV得分: 0.8066\n",
      "  测试准确率: 0.8102\n",
      "  AUC: 0.8893\n",
      "  训练时间: 533.23秒\n",
      "\n",
      "训练 Decision Tree...\n",
      "  最佳参数: {'max_depth': 10, 'min_samples_leaf': 2, 'min_samples_split': 2}\n",
      "  CV得分: 0.7220\n",
      "  测试准确率: 0.7300\n",
      "  AUC: 0.7694\n",
      "  训练时间: 300.79秒\n",
      "\n",
      "训练 KNN...\n",
      "  最佳参数: {'metric': 'euclidean', 'n_neighbors': 9, 'weights': 'distance'}\n",
      "  CV得分: 0.7539\n",
      "  测试准确率: 0.7628\n",
      "  AUC: 0.8466\n",
      "  训练时间: 339.80秒\n",
      "\n",
      "训练 Naive Bayes...\n",
      "  最佳参数: {'alpha': 0.5}\n",
      "  CV得分: 0.7491\n",
      "  测试准确率: 0.7471\n",
      "  AUC: 0.8268\n",
      "  训练时间: 0.85秒\n",
      "\n",
      "\n",
      "================================================================================\n",
      "机器学习模型性能汇总\n",
      "================================================================================\n",
      "特征类型         模型                   准确率        AUC        训练时间(秒)     \n",
      "--------------------------------------------------------------------------------\n",
      "TF-IDF       Logistic Regression  0.8817     0.9525     22.34       \n",
      "TF-IDF       SVM                  0.6706     0.7350     220.82      \n",
      "TF-IDF       Random Forest        0.8499     0.9284     260.47      \n",
      "TF-IDF       Decision Tree        0.7325     0.7691     397.61      \n",
      "TF-IDF       KNN                  0.6723     0.7386     2848.93     \n",
      "TF-IDF       Naive Bayes          0.8524     0.9278     5.17        \n",
      "PCA          Logistic Regression  0.8823     0.9524     44.70       \n",
      "PCA          SVM                  0.6906     0.7603     221.31      \n",
      "PCA          Random Forest        0.7774     0.8661     655.68      \n",
      "PCA          Decision Tree        0.7115     0.7290     1244.60     \n",
      "PCA          KNN                  0.6729     0.7420     1923.03     \n",
      "PCA          Naive Bayes          0.5514     0.5962     5.34        \n",
      "Word2Vec     Logistic Regression  0.8504     0.9262     13.23       \n",
      "Word2Vec     SVM                  0.5090     0.6667     16.55       \n",
      "Word2Vec     Random Forest        0.8102     0.8893     533.23      \n",
      "Word2Vec     Decision Tree        0.7300     0.7694     300.79      \n",
      "Word2Vec     KNN                  0.7628     0.8466     339.80      \n",
      "Word2Vec     Naive Bayes          0.7471     0.8268     0.85        \n"
     ]
    }
   ],
   "source": [
    "def extract_tfidf_features(\n",
    "    train_tokens, test_tokens, max_features=5000, ngram_range=(1, 2)\n",
    "):\n",
    "    \"\"\"\n",
    "    提取TF-IDF特征\n",
    "\n",
    "    Args:\n",
    "        train_tokens: 训练集分词结果\n",
    "        test_tokens: 测试集分词结果\n",
    "        max_features: 最大特征数\n",
    "        ngram_range: n-gram范围\n",
    "\n",
    "    Returns:\n",
    "        tuple: (训练特征, 测试特征, 向量化器)\n",
    "    \"\"\"\n",
    "    # 将分词结果重新组合成文本\n",
    "    train_texts = [\" \".join(tokens) for tokens in train_tokens]\n",
    "    test_texts = [\" \".join(tokens) for tokens in test_tokens]\n",
    "\n",
    "    # TF-IDF向量化\n",
    "    vectorizer = TfidfVectorizer(\n",
    "        max_features=max_features,\n",
    "        ngram_range=ngram_range,\n",
    "        min_df=2,  # 最小文档频率\n",
    "        max_df=0.95,  # 最大文档频率\n",
    "    )\n",
    "\n",
    "    X_train_tfidf = vectorizer.fit_transform(train_texts)\n",
    "    X_test_tfidf = vectorizer.transform(test_texts)\n",
    "\n",
    "    print(f\"TF-IDF特征提取完成！\")\n",
    "    print(f\"特征维度: {X_train_tfidf.shape}\")\n",
    "    print(\n",
    "        f\"稀疏度: {(1 - X_train_tfidf.nnz / (X_train_tfidf.shape[0] * X_train_tfidf.shape[1])) * 100:.2f}%\"\n",
    "    )\n",
    "\n",
    "    return X_train_tfidf, X_test_tfidf, vectorizer\n",
    "\n",
    "\n",
    "# 提取TF-IDF特征\n",
    "X_train_tfidf, X_test_tfidf, tfidf_vectorizer = extract_tfidf_features(\n",
    "    train_tokens, test_tokens\n",
    ")\n",
    "\n",
    "# 获取特征名称\n",
    "feature_names = tfidf_vectorizer.get_feature_names_out()\n",
    "print(f\"\\n特征词汇示例: {feature_names[:20]}\")\n",
    "\n",
    "## 3.2 PCA降维处理\n",
    "\n",
    "\n",
    "def apply_pca_reduction(X_train, X_test, n_components=0.95):\n",
    "    \"\"\"\n",
    "    应用PCA降维\n",
    "\n",
    "    Args:\n",
    "        X_train: 训练特征\n",
    "        X_test: 测试特征\n",
    "        n_components: 保留的方差比例或主成分数量\n",
    "\n",
    "    Returns:\n",
    "        tuple: (降维后训练特征, 降维后测试特征, PCA对象)\n",
    "    \"\"\"\n",
    "    pca = PCA(n_components=n_components)\n",
    "    X_train_pca = pca.fit_transform(X_train.toarray())\n",
    "    X_test_pca = pca.transform(X_test.toarray())\n",
    "\n",
    "    print(f\"PCA降维完成！\")\n",
    "    print(f\"原始维度: {X_train.shape[1]}\")\n",
    "    print(f\"降维后维度: {X_train_pca.shape[1]}\")\n",
    "    print(f\"保留方差比例: {pca.explained_variance_ratio_.sum():.4f}\")\n",
    "\n",
    "    return X_train_pca, X_test_pca, pca\n",
    "\n",
    "\n",
    "# 应用PCA降维\n",
    "X_train_pca, X_test_pca, pca_model = apply_pca_reduction(X_train_tfidf, X_test_tfidf)\n",
    "\n",
    "## 3.3 Word2Vec词嵌入\n",
    "\n",
    "\n",
    "def create_word2vec_features(\n",
    "    train_tokens, test_tokens, vector_size=300, window=5, min_count=2\n",
    "):\n",
    "    \"\"\"\n",
    "    创建Word2Vec特征\n",
    "\n",
    "    Args:\n",
    "        train_tokens: 训练集分词结果\n",
    "        test_tokens: 测试集分词结果\n",
    "        vector_size: 词向量维度\n",
    "        window: 窗口大小\n",
    "        min_count: 最小词频\n",
    "\n",
    "    Returns:\n",
    "        tuple: (训练特征, 测试特征, Word2Vec模型)\n",
    "    \"\"\"\n",
    "    # 训练Word2Vec模型\n",
    "    w2v_model = Word2Vec(\n",
    "        sentences=train_tokens,\n",
    "        vector_size=vector_size,\n",
    "        window=window,\n",
    "        min_count=min_count,\n",
    "        workers=4,\n",
    "        sg=0,  # CBOW\n",
    "        epochs=10,\n",
    "    )\n",
    "\n",
    "    def text_to_vector(tokens, model, vector_size):\n",
    "        \"\"\"将分词转换为平均词向量\"\"\"\n",
    "        vectors = []\n",
    "        for token in tokens:\n",
    "            if token in model.wv.key_to_index:\n",
    "                vectors.append(model.wv[token])\n",
    "\n",
    "        if vectors:\n",
    "            return np.mean(vectors, axis=0)\n",
    "        else:\n",
    "            return np.zeros(vector_size)\n",
    "\n",
    "    # 转换为词向量\n",
    "    X_train_w2v = np.array(\n",
    "        [text_to_vector(tokens, w2v_model, vector_size) for tokens in train_tokens]\n",
    "    )\n",
    "    X_test_w2v = np.array(\n",
    "        [text_to_vector(tokens, w2v_model, vector_size) for tokens in test_tokens]\n",
    "    )\n",
    "\n",
    "    print(f\"Word2Vec特征创建完成！\")\n",
    "    print(f\"词汇表大小: {len(w2v_model.wv.key_to_index)}\")\n",
    "    print(f\"特征维度: {X_train_w2v.shape}\")\n",
    "    print(\n",
    "        f\"零向量比例: {np.sum(np.all(X_train_w2v == 0, axis=1)) / len(X_train_w2v) * 100:.2f}%\"\n",
    "    )\n",
    "\n",
    "    return X_train_w2v, X_test_w2v, w2v_model\n",
    "\n",
    "\n",
    "# 创建Word2Vec特征\n",
    "X_train_w2v, X_test_w2v, w2v_model = create_word2vec_features(train_tokens, test_tokens)\n",
    "\n",
    "# 准备所有特征集合\n",
    "feature_sets = {\n",
    "    \"TF-IDF\": (X_train_tfidf, X_test_tfidf),\n",
    "    \"PCA\": (X_train_pca, X_test_pca),\n",
    "    \"Word2Vec\": (X_train_w2v, X_test_w2v),\n",
    "}\n",
    "\n",
    "print(\"\\n所有特征集合准备完成，可以开始模型训练！\")\n",
    "\n",
    "# 4. 机器学习模型\n",
    "\n",
    "## 4.1 机器学习模型定义与训练\n",
    "\n",
    "\n",
    "# 定义机器学习模型类\n",
    "class MLModelEvaluator:\n",
    "    def __init__(self):\n",
    "        \"\"\"\n",
    "        机器学习模型评估器\n",
    "        \"\"\"\n",
    "        self.models = {\n",
    "            \"Logistic Regression\": {\n",
    "                \"model\": LogisticRegression(random_state=42, max_iter=1000),\n",
    "                \"params\": {\"C\": [0.1, 1, 10], \"solver\": [\"liblinear\", \"lbfgs\"]},\n",
    "            },\n",
    "            \"SVM\": {\n",
    "                \"model\": SVC(random_state=42, max_iter=100, probability=True),\n",
    "                \"params\": {\n",
    "                    \"C\": [1],\n",
    "                    \"kernel\": [\"rbf\"],\n",
    "                    \"gamma\": [\"auto\"],\n",
    "                },\n",
    "            },\n",
    "            \"Random Forest\": {\n",
    "                \"model\": RandomForestClassifier(random_state=42, n_jobs=-1),\n",
    "                \"params\": {\n",
    "                    \"n_estimators\": [50, 100, 200],\n",
    "                    \"max_depth\": [10, 20, None],\n",
    "                    \"min_samples_split\": [2, 5],\n",
    "                },\n",
    "            },\n",
    "            \"Decision Tree\": {\n",
    "                \"model\": DecisionTreeClassifier(random_state=42),\n",
    "                \"params\": {\n",
    "                    \"max_depth\": [10, 20, 30, None],\n",
    "                    \"min_samples_split\": [2, 5, 10],\n",
    "                    \"min_samples_leaf\": [1, 2, 4],\n",
    "                },\n",
    "            },\n",
    "            \"KNN\": {\n",
    "                \"model\": KNeighborsClassifier(n_jobs=-1),\n",
    "                \"params\": {\n",
    "                    \"n_neighbors\": [3, 5, 7, 9],\n",
    "                    \"weights\": [\"uniform\", \"distance\"],\n",
    "                    \"metric\": [\"euclidean\", \"manhattan\"],\n",
    "                },\n",
    "            },\n",
    "            \"Naive Bayes\": {\n",
    "                \"model\": MultinomialNB(),\n",
    "                \"params\": {\"alpha\": [0.1, 0.5, 1.0, 2.0]},\n",
    "            },\n",
    "        }\n",
    "\n",
    "        self.results = {}\n",
    "        self.best_models = {}\n",
    "\n",
    "    def train_and_evaluate(self, feature_sets, train_labels, test_labels, cv=3):\n",
    "        \"\"\"\n",
    "        训练和评估所有模型在所有特征集上的性能\n",
    "        \"\"\"\n",
    "        print(\"=\" * 60)\n",
    "        print(\"开始机器学习模型训练与评估\")\n",
    "        print(\"=\" * 60)\n",
    "\n",
    "        for feature_name, (X_train, X_test) in feature_sets.items():\n",
    "            print(f\"\\n正在使用 {feature_name} 特征进行训练...\")\n",
    "            print(\"-\" * 40)\n",
    "\n",
    "            self.results[feature_name] = {}\n",
    "\n",
    "            for model_name, model_config in self.models.items():\n",
    "                print(f\"训练 {model_name}...\")\n",
    "                start_time = time.time()\n",
    "\n",
    "                # 网格搜索\n",
    "                grid_search = GridSearchCV(\n",
    "                    model_config[\"model\"],\n",
    "                    model_config[\"params\"],\n",
    "                    cv=cv,\n",
    "                    scoring=\"accuracy\",\n",
    "                    n_jobs=-1,\n",
    "                    verbose=0,\n",
    "                )\n",
    "\n",
    "                # 处理稀疏矩阵\n",
    "                if hasattr(X_train, \"toarray\"):\n",
    "                    X_train_dense = X_train.toarray()\n",
    "                    X_test_dense = X_test.toarray()\n",
    "                else:\n",
    "                    X_train_dense = X_train\n",
    "                    X_test_dense = X_test\n",
    "\n",
    "                # 对于Naive Bayes，确保特征非负\n",
    "                if model_name == \"Naive Bayes\" and np.any(X_train_dense < 0):\n",
    "                    X_train_dense = np.abs(X_train_dense)\n",
    "                    X_test_dense = np.abs(X_test_dense)\n",
    "\n",
    "                # 训练模型\n",
    "                grid_search.fit(X_train_dense, train_labels)\n",
    "                best_model = grid_search.best_estimator_\n",
    "\n",
    "                # 预测\n",
    "                y_pred = best_model.predict(X_test_dense)\n",
    "\n",
    "                # 获取预测概率\n",
    "                if hasattr(best_model, \"predict_proba\"):\n",
    "                    y_proba = best_model.predict_proba(X_test_dense)[:, 1]\n",
    "                elif hasattr(best_model, \"decision_function\"):\n",
    "                    y_proba = best_model.decision_function(X_test_dense)\n",
    "                else:\n",
    "                    y_proba = y_pred\n",
    "\n",
    "                # 计算指标\n",
    "                accuracy = accuracy_score(test_labels, y_pred)\n",
    "                auc_score = roc_auc_score(test_labels, y_proba)\n",
    "                training_time = time.time() - start_time\n",
    "\n",
    "                # 存储结果\n",
    "                self.results[feature_name][model_name] = {\n",
    "                    \"best_params\": grid_search.best_params_,\n",
    "                    \"accuracy\": accuracy,\n",
    "                    \"auc\": auc_score,\n",
    "                    \"training_time\": training_time,\n",
    "                    \"cv_score\": grid_search.best_score_,\n",
    "                    \"predictions\": y_pred,\n",
    "                    \"probabilities\": y_proba,\n",
    "                    \"best_model\": best_model,\n",
    "                }\n",
    "\n",
    "                print(f\"  最佳参数: {grid_search.best_params_}\")\n",
    "                print(f\"  CV得分: {grid_search.best_score_:.4f}\")\n",
    "                print(f\"  测试准确率: {accuracy:.4f}\")\n",
    "                print(f\"  AUC: {auc_score:.4f}\")\n",
    "                print(f\"  训练时间: {training_time:.2f}秒\")\n",
    "                print()\n",
    "\n",
    "    def print_summary(self):\n",
    "        \"\"\"\n",
    "        打印结果摘要\n",
    "        \"\"\"\n",
    "        print(\"\\n\" + \"=\" * 80)\n",
    "        print(\"机器学习模型性能汇总\")\n",
    "        print(\"=\" * 80)\n",
    "        print(\n",
    "            f\"{'特征类型':<12} {'模型':<20} {'准确率':<10} {'AUC':<10} {'训练时间(秒)':<12}\"\n",
    "        )\n",
    "        print(\"-\" * 80)\n",
    "\n",
    "        for feature_name in self.results:\n",
    "            for model_name in self.results[feature_name]:\n",
    "                result = self.results[feature_name][model_name]\n",
    "                print(\n",
    "                    f\"{feature_name:<12} {model_name:<20} {result['accuracy']:<10.4f} \"\n",
    "                    f\"{result['auc']:<10.4f} {result['training_time']:<12.2f}\"\n",
    "                )\n",
    "\n",
    "\n",
    "# 实例化并训练机器学习模型\n",
    "ml_evaluator = MLModelEvaluator()\n",
    "ml_evaluator.train_and_evaluate(feature_sets, train_labels, test_labels)\n",
    "ml_evaluator.print_summary()\n",
    "\n",
    "# 5. PyTorch深度学习模型\n",
    "\n",
    "## 5.1 PyTorch模型架构定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b00b623e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============================================================\n",
      "开始PyTorch深度学习模型训练与评估\n",
      "============================================================\n",
      "\n",
      "训练MLP模型 - PCA特征\n",
      "----------------------------------------\n",
      "Epoch 1/10, Train Loss: 0.4092, Val Loss: 0.6050\n",
      "Epoch 2/10, Train Loss: 0.2084, Val Loss: 0.6046\n",
      "Epoch 3/10, Train Loss: 0.1000, Val Loss: 0.6063\n",
      "Epoch 4/10, Train Loss: 0.0424, Val Loss: 0.7268\n",
      "Epoch 5/10, Train Loss: 0.0268, Val Loss: 1.1652\n",
      "Early stopping triggered\n",
      "测试准确率: 0.8246\n",
      "AUC: 0.9182\n",
      "训练时间: 67.61秒\n",
      "\n",
      "训练MLP模型 - Word2Vec特征\n",
      "----------------------------------------\n",
      "Epoch 1/10, Train Loss: 0.4179, Val Loss: 0.6431\n",
      "Epoch 2/10, Train Loss: 0.3720, Val Loss: 0.4484\n",
      "Epoch 3/10, Train Loss: 0.3596, Val Loss: 0.4969\n",
      "Epoch 4/10, Train Loss: 0.3543, Val Loss: 0.4905\n",
      "Epoch 5/10, Train Loss: 0.3482, Val Loss: 0.4204\n",
      "Epoch 6/10, Train Loss: 0.3412, Val Loss: 0.5182\n",
      "Epoch 7/10, Train Loss: 0.3333, Val Loss: 0.5340\n",
      "Epoch 8/10, Train Loss: 0.3288, Val Loss: 0.5617\n",
      "Early stopping triggered\n",
      "测试准确率: 0.8284\n",
      "AUC: 0.9263\n",
      "训练时间: 46.04秒\n",
      "\n",
      "准备序列数据...\n",
      "词汇表大小: 10000\n",
      "序列长度: 500\n",
      "\n",
      "训练LSTM模型\n",
      "----------------------------------------\n",
      "Epoch 1/10, Train Loss: 0.6633, Val Loss: 0.9892\n",
      "Epoch 2/10, Train Loss: 0.6616, Val Loss: 0.9967\n",
      "Epoch 3/10, Train Loss: 0.6606, Val Loss: 1.0124\n",
      "Epoch 4/10, Train Loss: 0.6594, Val Loss: 0.9748\n",
      "Epoch 5/10, Train Loss: 0.6587, Val Loss: 1.0029\n",
      "Epoch 6/10, Train Loss: 0.6588, Val Loss: 0.9794\n",
      "Epoch 7/10, Train Loss: 0.6585, Val Loss: 1.0216\n",
      "Early stopping triggered\n",
      "LSTM测试准确率: 0.5005\n",
      "LSTM AUC: 0.4999\n",
      "LSTM训练时间: 109.27秒\n",
      "\n",
      "训练CNN模型\n",
      "----------------------------------------\n",
      "Epoch 1/10, Train Loss: 0.5542, Val Loss: 0.9797\n",
      "Epoch 2/10, Train Loss: 0.3755, Val Loss: 0.5623\n",
      "Epoch 3/10, Train Loss: 0.2858, Val Loss: 0.6290\n",
      "Epoch 4/10, Train Loss: 0.2220, Val Loss: 0.4624\n",
      "Epoch 5/10, Train Loss: 0.1725, Val Loss: 0.6507\n",
      "Epoch 6/10, Train Loss: 0.1481, Val Loss: 0.8865\n",
      "Epoch 7/10, Train Loss: 0.1210, Val Loss: 0.3860\n",
      "Epoch 8/10, Train Loss: 0.0972, Val Loss: 1.0432\n",
      "Epoch 9/10, Train Loss: 0.0864, Val Loss: 1.0661\n",
      "Epoch 10/10, Train Loss: 0.0743, Val Loss: 0.6923\n",
      "Early stopping triggered\n",
      "CNN测试准确率: 0.8543\n",
      "CNN AUC: 0.9339\n",
      "CNN训练时间: 41.76秒\n",
      "\n",
      "============================================================\n",
      "PyTorch深度学习模型性能汇总\n",
      "============================================================\n",
      "模型              准确率        AUC        训练时间(秒)     \n",
      "------------------------------------------------------------\n",
      "MLP_PCA         0.8246     0.9182     67.61       \n",
      "MLP_Word2Vec    0.8284     0.9263     46.04       \n",
      "LSTM            0.5005     0.4999     109.27      \n",
      "CNN             0.8543     0.9339     41.76       \n",
      "\n",
      "最佳PyTorch模型: CNN (准确率: 0.8543)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABjYAAASdCAYAAADjZGWgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Q28n3P9P/DPbmyjbLa5WcQaoYiEMWJSpBLd8CtLJZF+KFS/VRIihgohkpssNyV0o5Sk+iFRspbcRGHmLjfFZsJiO//H6/o/rvP7nrPzPTtj2znfs+fz8fg+zr531/fzva7re+26Pu/P5/0e0NbW1lYAAAAAAABawMDebgAAAAAAAEBPCWwAAAAAAAAtQ2ADAAAAAABoGQIbAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AgD5m3rx55ZlnnuntZkC/MGfOnN5uAgAAsJgJbAAALeenP/1p+fznP19uvvnmxbbMBx54oNx5551d3ubPn1+9ptnzuXUXiHjooYfKs88+2+Gxu+++u7z1rW/t8jv87Gc/K69+9avL6aefXgU5YEnIPvm3v/1tqX/uBRdcUDbffPPy97///UW9v6v3fe973yu77LJLef755xd4bq+99ipvectbyu9///vSG+64447yzne+s5x77rldPv+e97ynvOpVr2q/P3ny5PLKV76yzJo1a4m16UMf+lDZYostmj6fdZZj0FNPPdXtcg488MCyxx57LNJn//KXvyzf+MY3ynPPPbfAcznefeQjHymnnnrqIi0z7exJMPjTn/502XLLLV9ysKutra18+ctfLo8++mhZWu6///7yta99rfzoRz/q8vmsu/vuu6888sgjTZfxgx/8oOywww7lkksuWYItBQBYOgYvpc8BAFhsrrvuuqqDZ+utt+7w+NNPP12mTp3a5XvScZjOxWb++7//u/z85z/v8rl0gr385S8vm2yySZk7d27TNm277bYLPH7LLbeUnXbaqay99tpVQGb06NHV41dddVW5+uqrq07a6dOnl5VWWqn9PSeffHL5xz/+UX73u99VHYfNTJs2rRx11FFlyJAhZbnlliuDBg0qPbXyyiuXr3/96z1+Pf1POpCvuOKKaj/42Mc+Vu3n6fhcVOnYHjZsWI9fn99p9t10bp9yyimL9FnHH398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ppvK29/+9h59l7/97W8dlpOLks63rPuLL7643Hfffe2PzZ07t8yePbv85z//WWB/2Hzzzcull17a3q6s+z333LM9kHD55ZdXF7VdbYvIvvKyl72sLLfccj36DtmutZtvvrm6oOvsrLPOKjfccEMZNmxY2WCDDcp3v/vdctRRR3X5+VmPWS/5vrnde++95e67766ey771/e9/vwoOdCcXeFk3nYMnCWqceOKJC2y7vDYX6c2cc845Zd111y3//Oc/2zsm9tlnn/Lkk0+WRfGjH/2o3HbbbdVvFABYtjhv7xuct/eeW2+9tay99trll7/8ZXX/8ccfL5/85Cer770o7rzzzvLrX/+6+j0ALaoNgGXefvvt1/aOd7yjw2MbbLBB21FHHdU2Y8aMtltuuSVnxW2/+c1vFnjvrFmzqueefPLJ6v7f//73tlVWWaX696c+9am2gw8+uP21l156adv48eO7bMNhhx3WNmDAgLbf//731f2bbrqpbfnll2+75pprqvu77rpr2+abb972/PPPd/n+uXPntv3tb39ru/fee9seeOCBtn/84x9d3qZOnVq191//+ldbXzR//vy2j33sY2177rln23ve8562z33uc9W67epWb5eZM2e2v//GG2+sHluU25VXXrlAGz74wQ+2DR06tO3+++9v33YrrbRS25133tk2b968tk022aTt3e9+d9Pv8fTTT1fbI/tPd9vjy1/+ctuKK67Y4b35rMGDB7edfvrp7Y/99re/rdr6wx/+sP2xyy67rO3mm2+u2vuf//yn7dlnn21/7qMf/Wjby1/+8rbllluuuuXfafNzzz3XttFGG1X71ogRI6pblvuRj3xkge+w1157tQ0cOLB67+jRo6tb1kH978ZbljNo0KC27bbbrsv1kfattdZa1Xatpb15bJ999mn6nr/85S/Vbyrrsb6l/W9+85s7PFbf7rnnnrY77rijWrcAQP/jvL3vcN7+f37wgx9U7bv22ms7PH7kkUdW58mNbr311uq1//u//9thXWR/y/fIuW5X+29tjz32aBs3blx1rlz7r//6r7YNN9ywOtfvyl//+tf2fa4+b862y3q66667ujynzvrLbwTouwQ2AJZhObH75z//2bb33nu37bTTTtVFw3333Vc997rXva69Yzkn4zn5vO666xZYxiOPPFI9N3z48OqkNSe79Qnv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Pfroo2X27Nm93Qz6UCqqxr9QGzFiRFlttdVKKxDYAAAAAIB+HNT44Ic+XJ7/z9zebgp9TOpsQKPlhgwtF15wfksENwQ2AAAAAKCfykyNBDWeXXu7Mn/YiN5uDtBHDXxudin3XlsdMwQ2AAAAAIBel6DG/Jet3NvNAFgsFA8HAAAAAABahsAGAAAAAADQMqSiAgAAAIB+buCzs3q7CUAfNrDFjhECGwAAAADQzy0/47rebgLAYiOwAQAAAAD93LPjJpb5y6/U280A+vCMjeVbKAAqsAEAsJQ999xz5f777+/tZtAHrbXWWmXYsGG93QwAoB9KUGP+y1bu7WYALBYCGwAAS1mCGvvtt19vN4M+6KyzzirrrbdebzcDAACgTxPYoMduu+22svfee5e777677LvvvuUrX/lKGTBgQNPXt7W1lQMOOKB8//vfL/Pnzy/vfve7yze/+c2y/PLLV89vvPHG5dZbb21//T777FPOOeecpfJdAKC3R+WnA3tZN3PmzHLssceWww47rIwdO7a3m9Nn9g1g4R599NEye/bs3m4Gfez/lMa/ECNGjCirrbZabzcDgCVAYIMemTt3btlll13KTjvtVC6++OJy0EEHlalTp1aBjmYuuOCCctddd5Xp06eXp556qnz0ox8txx13XDn66KPLM888U+65557y2GOPleWWW656/dChQ5fiNwKA3pNUQ0bl/58ENawPYFGCGh/80IfL8/+Z29tNoQ9KwBxqyw0ZWi684HzBDYB+SGCDHrnyyiurEVEnnXRSWWGFFcqUKVPKgQce2G1g46abbiq77757+wjMzNi4/fbbq38n2JEZG6ussspS+w4AAEDry3VJghrPrr1dmT9sRG83B+ijBj43u5R7r62OGQIbAP2PwAY9csstt5QJEyZUQY1IUOKOO+7o9j0bbrhhNWtjt912q4qkZqbHpz/96fagx4MPPlgFNp5//vkyadKk8vWvf73prI3MGMmtlhkgAADAsitBDUVwAQCWTQN7uwG0hgQSxo0b134/tTUGDRpUnnzyyabvSR2Op59+uowZM6a86lWvqt6/1157Vc8lRdU222xTrr/++nLVVVeVq6++upx88slNl5UUVsmNWd/WXHPNxfwNAQAAAABoBQIb9MjgwYMXmE2R/OCpldHMKaecUlZaaaWqeNv9999fXnjhhTJ58uTquTPPPLN873vfK+uvv37ZcsstyxFHHFEuu+yypss69NBDq+mj9e2BBx5YjN8OAAAAAIBWIbBBj4waNao8/vjjHR6bM2dOGTJkSNP3XHTRRVUgY6211qpmWGTWxbnnntvla1ddddXy0EMPNV1WgirDhw/vcAMAAAAAYNkjsEGPjB8/vtx4443t92fMmFHVvEjAo5n58+eXxx57rP3+I488UubNm1f9e6uttuow6yLLrouMAwAAAABAM4qH0yMTJ06s6mycd955Ze+99y5TpkwpO+ywQ1VnY9asWWXFFVes/t1o2223Lccff3z1+H/+859ywgknlF133bW9sPjHP/7xcuSRR5Y777yznHjiieX000/vpW8HAAAAAECrENigxzU2zjnnnDJp0qQqvdTAgQPLNddcUz03cuTIMn369LLJJpt0eM8xxxxTBUM++9nPVmmrdtppp6ruRnzta1+rAiTbb799lYbqq1/9anthcQAAAAAAaEZggx7LbIt77rmnTJs2rUyYMKGMHj26erytra3L16dw+Pnnn9/0uR/96EdLtL0AAAAAAPQ/AhsskjFjxpSdd965t5sBAAAAAMAySvFwAAAAAACgZQhsAAAAAAAALUNgAwAAoEXddtttZfz48WXkyJFl8uTJTevf1Z5//vnqdWuttVZ5xSteUY444ojywgsvLLX2AgDA4qDGBrxEjz76aJk9e3ZvN4M+YubMmR3+QowYMaKsttpqvd0MAPqZuXPnll122aXstNNO5eKLLy4HHXRQmTp1atl7772bvueoo44qV155ZfnFL35RvX/33XevgiFf/vKXl2rbAQDgpRDYgJcY1Pjghz5cnv/P3N5uCn3Mscce29tNoA9ZbsjQcuEF5wtuALBYJUCRATYnnXRSWWGFFcqUKVPKgQce2G1g4/zzzy8nn3xy2WCDDar7n/nMZ8qZZ54psAEAQEsR2ICXIBeSCWo8u/Z2Zf6wEb3dHKAPGvjc7FLuvbY6XghsALA43XLLLWXChAlVUCM23njjcscdd3T7nn/+859VGqraoEGDqlszmdWRW+2pp55aLG0HAICXQmADFoMENea/bOXebgYAAMuQBBnGjRvXfn/AgAFVkOLJJ5+sam50ZdNNNy2XX355VZdj3rx55YILLig77rhj08847rjjqvRVAADQlygeDgAA0IIGDx5chg4d2uGxYcOGlWee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rN5uAtCHOUYA9G8CGyxy/t5MdU/+3gMPPLDbwEZeV0+Lj5NPPrl86UtfqkaR/fGPfyxbbbVVdVEFAAAsulGjRlWzqhvNmTOnDBkypOl7LrroonL00UeXtdZaq31Gxnbbbdc0sJHASefgSV+x/IzrersJAAD0EoENllj+3kYJZMyYMaPsscce7UULc0tgIxde++23X/nyl79cjRoDAAAWLmlizz777Pb7Od/OTOsEPJqZP39+eeyxx9rvP/LII2XevHmlFT07bmKZv7yBUkDzGRsCoAD9l8AGLzl/b7Np7o1OO+20sv/++5eBA/9/WZe//e1vVWqrpKa65557qoDH6173uvbAR2e5QMutsT0AALAsmzhxYnVefN5551UzqTOreocddqjO02fNmlVWXHHF6t+Ntt1223L88cdXj//nP/8pJ5xwQtl1111LK0pQY/7LVu7tZgAA0AsENlhi+XtrTzzxRLn88surfL6Nqa1qCZikZsdll13WNLCRKfJHHXXUS/4eAADQn87RzznnnDJp0qSqTkYGEV1zzTXVczlHnz59etlkk006vOeYY46pgiGf/exnq7RVqaHXeJ4OAACtQGCDJZa/t/bDH/6wGhnWXQBk1VVXLQ899FDT5/ty0UIAAOgtmW2RGdDTpk2rUseOHj26erytra3L1ycV7Pnnn7+UWwkAAIvX/88LBD3I33vjjTcuUv7e2iWXXFLe+973tt9/9tlny0YbbVT9rWXZY8eObbqMzBYZPnx4hxsAAFDKmDFjys4779we1AAAgP5OYINFzt8bnfP3Nis4mODFtddeW970pje1P7b88suX1VZbrRxwwAHl5ptvLieffHL57ne/W9XgAAAAAACA7khFxRLL3xs33HBD9fzaa6/d4fFvf/vb5SMf+UjZZpttyqte9apy8cUXl+22226pfR8AAAAAAFqTwAZLLH9vvOUtbymPPPLIAo+vtdZa5Te/+c0SbS8AAAAAAP2PwAYvKn8vALxYA5+b3dtN6H3zXygD5z7d262gD5o/9OWlDFy2T9EdIwAAgIVZtq+aAIClZsSIEWW5IUNLuffa3m4K0MflWJFjBgAAQFcENgCApWK11VYrF15wfpk922jsuXPndpmqETI7dujQoWVZl6BGjhkAAABdEdgAAJaadFTqrPz/Ntpoo95uAgAAALSkgb3dAAAAAAAAgJ4yYwMWg4HPzurtJgB9lOMDAAAAwOIlsAGLwfIzruvtJgAAAAAALBMENmAxeHbcxDJ/+ZV6uxlAH52xIfgJAAAAsPgIbMBikKDG/Jet3NvNAAAAAADo9xQPBwAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AAAAAAKBlCGwAAAAAAAAtQ2ADAAAAAABoGQIbAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AAAAAAKBlCGwAAAAAAAAtQ2ADAAAAAABoGQIbAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AAAAAAKBlCGwAAAAAAAAtQ2ADAAAAAABoGQIbAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AAAAAAKBlCGwAAAAAAAAtQ2ADAAAAAABoGQIbAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsNHP/fKXv6z+trW1tT82Y8aM8vzzz5dnnnmmbLHFFr3YOgAAAAAAWDQCG/3cRz7ykTJ9+vQyceLEKpgxb968sttuu5Uf/ehHZejQoWXu3Lm93UQAAAAAAOixwT1/Ka1o9OjR5XWve11ZffXVy/vf//7ytre9ray//vrlfe97X/X8oEGDeruJAAAAAADQY2Zs9HPLL798WW655cpFF11UPvrRj5ZJkyaVXXbZpRx//PELpKgCAAAAAIC+zoyNZcQnP/nJcvjhh5crrrii7LXXXuWUU05Z5GXcdtttZe+99y5333132XfffctXvvKVMmDAgG7TYH3nO99Z4PHU+HjVq15VTj/99HL00UeXl73sZeWcc84pb37zmxe5TQAAwLJp4HOze7sJQB/mGAHQvwls9GPTpk2ramjMnz+/DB8+vLzzne8s5513XvnUpz5V1l577XLvvfdWdTcSaHjuuefKa1/72qbLynIy02OnnXYqF198cTnooIPK1KlTq0BHM2eccUb5+te/3n7/xhtvLAcffHBZc801y1VXXVX+53/+p1rWKqusUj74wQ+WP/7xj1XqLAAAgGZGjBhRlhsytJR7r+3tpgB9XI4VOWYA0P8IbPRTt99+e9lmm22qIMIxxxxTPv/5z1fBiwQWUl9j9913r1JUPf3002XTTTct//nPf8q///3vpsu78sory+zZs8tJJ51UVlhhhTJlypRy4IEHdhvYyOtyq5188snlS1/6UlXX45vf/GY1c+Rd73pX9Vz+pqB5ZoIAAAA0s9pqq5ULLzi/uj6B2syZM8uxxx5bDjvssDJ27Njebg59RIIaOWYA0P8IbPRTG2ywQfnHP/5RJk6cWAU53vSmN5XXvOY1Zfvtt68CDCeeeGL5+Mc/Xt7whjeU6dOnL3R5t9xyS5kwYUJ7oGLjjTcud9xxR4/bk9kYmRmyxx57tC/vAx/4QPvzW2yxRbnuuuuaBjYyYyS32lNPPdXjzwYAAPqXdFTqrKQrCWqst956vd0MAGAJUzy8n0rti5VWWqkMGzasfP/73y+nnXZalf4pAY+3vOUtVVqoRZFAwrhx4zosPzMvnnzyyR69P5+///77l4EDB3a5vKTKevjhh5u+/7jjjqtGWtS3zEQBAAAAAGDZI7DRz7W1tVV/119//aomxiabbFKlnvrWt75VPd5d8e9GgwcPLkOHDu3wWIImzzzzzELf+8QTT5TLL7+8Q9qqzstb2LIOPfTQaqp5fXvggQd61G4AAAAAAPoXgY1+LkGAOXPmVEW/k/5p5ZVXLscff3y5++67OwQ+FmbUqFHl8ccf7/BYljtkyJCFvveHP/xh2XbbbcvIkSObLm9hy0oQJLM6Gm8AANCK5s+fX82gbkwJe8kll5QbbrihzJs3r1fbBgAArUBgo59LTYzMykhx7iOPPLIKLnzqU5+qioinYHgKivfE+PHjO6SvSr2M1LxIgGJhcpH23ve+t9vl5aJujTXWWKTvBgAArebWW2+tZlPvsssu5Yorrmh/PEWP3/a2t5W11167qpEHAAA0J7DRz/35z38uL3/5y8tRRx3V/liKhv/sZz+r/l0X816YFCFPXYzzzjuvuj9lypSyww47VHU2Zs2a1XRk2bPPPluuvfbaqnh5o913372cccYZ5aGHHiqPPvpoOffcc6tZJQAA0J997GMfq26PPfZYOfzww9sfz+zqpHCdNGlS9TwAANCcwMYyKCmfktopfzOLoydSE+Occ84pn/jEJ6p0VqmZccIJJ1TPZRZIRp51JdPp83xGnjXKCLUUMV933XWrIuJveMMbFpjVAQAA/c1tt91WDfIZOHBgl+fcGYT0l7/8pVfaBgAArWJwbzeApSOjvu65557qYqkrr33ta8spp5zS7TJ23XXXahnTpk0rEyZMKKNHj15onY4ELx555JEFHk96rAsuuKAcdNBB5d///nfZbrvtelzIHAAAWlVmPSc1bGYsZ8BQo5wXZ+DRG9/4xl5rHwAAtAKBjX4uMyk22mijKiXV1772tSoIsf/++5czzzyzHHLIIeXrX/96VbzwS1/6Unn44YfL6quv3u3yxowZU3beeefF1r7U2gAAgGXFt7/97fLhD3+4vOIVr6hmNa+66qrt6V3vuuuuasDRT37yk95uJgAA9GkCG/3c5ptvXs2KeOaZZ6pZEbHiiitW/06KqPqxjTfeuH0GBgAAsGSMGjWqKhqemdA33nhjNbjo+eefLyuttFLZZJNNytZbb20mMwAALITARj/3mte8pgwfPrzce++9Za211qpmbDz++OPVv+u/8YEPfKAcf/zxvd1cAADo16677rr2f+dcvD4fTzAjwY0XXnihLLfccr3YQgAA6PsENvqpX/ziF+X222+vioQffvjh1XT23/3ud1XaqW233bZcf/315a1vfWv55S9/Wb2+We0NAABg8XnXu97V9LnU2EhqqksvvbRstdVWS7VdAADQSvRm91OZpZHi3P/4xz/KfffdVz12zjnnVH8zUyPFCvPcz3/+8yrAkQAIAACwZD355JNNn0tKqqOOOqp88pOfLDfffPNSbRcAALSSgb3dAJaM5OadNm1aOeCAA6o6Gm984xvL008/Xd0+9rGPlYceeqhsv/321WyOV73qVeXiiy/u7SYDAMAyLSmocv6eIuIAAEBzZmz0Y7Nnz64KhX/lK1+pZnC84hWvqAIajTl73/nOd5YHH3ywXHbZZWWPPfbo1fYCAMCyLilk11xzzd5uBgAA9GkCG/3YM888U7773e+2T2Pff//9y6233lrGjRvX/pqf/exn5bDDDqsCGwAAwJL1hje8oSoU3ixNVdLG5hweAABoTmCjH8sF09///vcqcLHbbrtV9/fbb7/y4Q9/uP01G2+8cfnMZz7Tq+0EAIBlxSGHHNL0uVGjRpVnn3223HjjjWXXXXddqu0CAIBWIrDRz6288srlZS97Wfnc5z5XrrvuunLVVVeVb3zjG+3P33333WWLLbYo2267bTnxxBN7ta0AANDf7bXXXh3u33777eXqq68uv/zlL6vz9f/8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Y401Flje9OnTq8cBAAAAAKA7Ahv0yMSJE6u6GOedd151f8qUKWWHHXao6mzMmjWrzJs3b4H3TJo0qUpH9etf/7rMnDmzHHDAAeU1r3lNVXh8t912KxdffHG59dZbq4DHqaeeWnbaaade+GYAAAAAALQSgQ16JDUxzjnnnKr498orr1wuv/zycsIJJ1TPjRw5sgpQdLbjjjtWr9l///2rgMbf//73ctlll1WpqV7/+teXgw8+uGy++ebVTI0ESBL4AAAAAACA7qixQY/tuuuuVX2MadOmlQkTJpTRo0dXj7e1tTV9zz777FPdunLssceWPffcszz00ENlu+2267bGBgAAAAAAhMAGi2TMmDFl5513XmzL22CDDaobAAAAAAD0hFRUAAAAAABAyxDYAAAAAAAAWobABgAAAAAA0DIENgAAAAAAgJYhsAEAAAAAALQMgQ0AAIAWddttt5Xx48eXkSNHlsmTJ5e2trYevW/+/Pll6623LieeeOISbyMAACxuAhsAAAAtaO7cuWWXXXYpm222Wbn55pvLHXfcUaZOndqj95555pll9uzZ5aCDDlri7QQAgMVNYAMAAKAFXXnllVVw4qSTTirrrLNOmTJlSjn33HMX+r6HH364fOELXyinnXZaWW655ZZKWwEAYHES2AAAAGhBt9xyS5kwYUJZYYUVqvsbb7xxNWtjYQ455JAyduzY8sADD5QbbrhhKbQUAAAWL4ENAACAFvTUU0+VcePGtd8fMGBAGTRoUHnyySebvufGG28sl156aXnlK19Z7rnnnrLXXnuVT3ziE92mu8rnNN4AAKC3CWwAAAC0oMGDB5ehQ4d2eGzYsGHlmWeeafqes88+u2y55ZbliiuuKEcffXT5zW9+U84444xy1113dfn64447rowYMaL9tuaaay727wEAAItKYAMAAKAFjRo1qjz++OMdHpszZ04ZMmRI0/c8+OCD5R3veEc1uyMSqFhllVWq2RtdOfTQQ6s6HvUt6asAAKC3De7tBgAAALDoxo8fX83AqM2YMaNKHZWARzNJQfXss8+233/66afLE088UdZYY40uX58ZIZ1nhQAAQG8T2AAAAGhBEydOrGpenHfeeWXvvfcuU6ZMKTvssENVZ2PWrFllxRVXrP7daNKkSdUtr3v1q19dDj/88PKa17ymKjxO63nuuefK/fff39vN6BNm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uqZPn17WWmutBU4O8p5BgwZ1e6KTG8CSlA6go48+urzsZS+rLkyOO+64qkMoF1e5n9PIH/zgB+WKK64ol112WbnxxhvLO9/5zrLiiit26FCaM2dOWWmllar7L7zwQvXen/zkJ2XixInVY//617/Km9/85upY+/3vf7/88Y9/rI6zv//978vrX//68trXvrbstdde5fDDD1+gjWlbPqPZcTPH6GOPPbZ89rOfXaLrCoDmnIMDLBrn4bBwg3vwGoB+IxdBjf/RX3/99WW77barHsuJQU4U8h99/oOOYcOGVf+Z53Wx9tprtz+ei6ZNNtmk+g8/JxyNBg4cWH74wx+W22+/vTo52HfffauTgz322KNa3te//vVyyCGHLHBBFWPHjnVyAPS6mTNnVsejXET99Kc/rTqU0jGUDqQrr7yyOo5de+215Stf+UrVaVQf+9ZYY43yl7/8pbqfi6ZNN920vPKVr6zuX3zxxWXChAnVCLNGo0ePLpdffnl1YTZgwICyxRZblF//+tdls802qzqhxowZUw477LAu25ljYnd22GGHMnLkyMW0VgB4MZyDA/Sc83DoGamogGXC/PnzqymQuUjJf9a5gMr9XBxtuOGGZdasWeWee+6pXpvHajmBuOWWW8rmm29e3R5++OH20RN77rln9djee++9wPTK+uQgoyA6nxyceeaZCz05yOdmZEXa1fmWi0AnB8CSlJGy6TSqR8Husssu1cVSpqKff/751WOHHnpodUw9++yzq1G4tRzz5s6dW40IO+aYY8rf/va39udOOumk6n6OmXk+7rrrruo9OZ5+6UtfqqbU57bbbruVVVZZpZoaf+edd5ZVV121Oj5nmY2yrC233LKccMIJXU51T1te/vKXL7F1BUBzzsEBFo3zcOg5MzaAZcLNN99cdtppp+qEINPXM/ph9dVXL9/85jer/8gbNY7QykVQLm5qmaY5fvz4ctFFF1VT3z/+8Y9XF0n1KIn65OA1r3lNdWEVOUHoSk4OMjLti1/8YnWr5YRg2223rU5QPvWpTy0w3d3JAbCk5dj33e9+t/zXf/1XNXorDjzwwPLb3/62usjJ8TQXVt/5zneqkV8PPPBAWXPNNasOqxxDk5f3V7/6VVX4MGlA6mPW3//+97L//vuXoUOHllNOOaXsuOOOZfDgwdUI3aQAyUVW7jfzkY98ZIHnc4zMqLW0Lxd83/rWt8r222/f4ZjZ2FkGwNLjHBxg0TgPh54T2ACWCRmt9eSTT5ZPf/rT1fT0++67r3r8T3/6U7d5dDOSLCPN8p9/PZLr7rvvLm9729uqC6nczwXQM888U97+9reXU0891ckB0C/kmJac6Mmrm+PUHXfcUUaNGlU9l9QguXjKyNe//vWv7cekjHRNCo8cw+pj78EHH1yN5IpcoJ144olVHt9acv5OmTKlOi6/+tWvrpbVeFzM8TXH4Yy4TX7fxlQmta222qrKB5zp+hdccMECx8ykQAFg6XMODrDonIdDzwhsAMuM/Oef/JT5jzmjGz784Q+X559/vtsCgMnPW0vRwne/+93lrLPOKqeffnp1spHREHUhrpqTA6C/2Gijjarj1dSpU8vkyZOr41lGueY4llGxKV6Y42gupFIQNh1N9UjZyKjXFDLMLd74xjeW1VZbrcNn5PUHHXRQ9e96WnzceuutVZHCdH5ldNkb3vCGDiNzO0sHWT3yNsfJvC/HUh1RAL3LOTjAonMeDgsnsAEsM375y1+Wxx57rPoPOVPXk6s3uSTrIoWd3XvvvdV0z/vvv79cffXV1f2McHj/+99f3vWud5UPfvCD1VT2jIBYZ511qlyUKd7l5ADoLzKFfZ999qly/GZ0a46jSf+Ri6gUJ8yI1kyBrz3yyCNVipF0YOU4mM6sXHTV6UZy4ZWRZb/4xS+qEWWRQq25de7gSqdVjrHJBVwf8/K6HFfrEbydZdnpNDvvvPOqfMQ5ZuYzHTMBeo9zcIBF5zwcFk7xcGCZkP/UjzjiiPKhD32ovchW/oNPPspM4Wz2ni984Qvlz3/+c3VCkaJZuaCK/CefE4tc6GQq51NPPVWNCEv+4PyH31XhrHpkWU4OUuwrF1R5bS6SmsnJwec///my1lprVScu4eQAWFrSkZTRXZHCqUnP8Y1vfKM63n32s58t++67bzU6rJY0Ia985Suri5lcjKUDauedd66Oo7koy8VQihDWF1ORTqtcIOXYnOXWt1x0ZbRs8gLXj+V9uaBrlM9JMcRMt88o3hwf//CHP5Rzzjmnel5HFEDvcQ4O8OI4D4ceaANYBlxwwQVta621Vtv111/fNnbs2PbHP/vZz7Ydc8wx1b8ff/zxts6HxenTp7etsMIKbRtuuGF1Gzp0aPX4W9/61rZ11lmnemzttddue8tb3tL+niuvvLJazsCBA9sGDRrUfhswYECXj+21114dPvPee+9tO/HEE9vGjx9ftfXII49smzFjRvvzY8aMqdoFsCTNnDmzbaWVVmp77LHH2ubMmdM2ceLEts997nPVcyNGjKiOmfvvv3/blltu2Xb//fdXj2+xxRZtP//5z9uX8e9//7tt8803bzv88MOrY9rpp5++wOfMmzev7YUXXljg8fe///1tJ5988gKPN7727rvvbhsyZEjbhAkT2i655JIul5Pv8Ne//vUlrAkAXizn4ACLznk49IxUVMAyIfkl119//fZpmJF8lSlieOGFFy7w+hQdzLT2jF7IdPUU6IpMd488ftlll5VNNtmk/P73vy9f/vKX29/71re+tRoN0bkg4h577FFNFT3kkEM6PJ4RY7V77rmnbLDBBmXTTTet8mim3Z2XY7QYsDSk0Ouuu+5aTU3PaLGk/EjO8UbJdZ70Hu973/uq9CJ33XVX2W677dpH3OZ+jpPHHHNMldM3x+CMGstosqQMyf2Msu1KYxqRRo3HxByTMzptzTXX7PCajMrNsfL/sXcf4FHV2f/HT3qhBBJ6B0EUUBBEEUREEVDALoqoWFAX7AUVXVFQwQLYsbJiXUR3LaCwrAUriiCCEUURREJZkBIgIX3+z+fL785/EpKQQMpM8n49zzWZmXvv3CnB+73ne85ZtGiRm81b1KxgAED54hwcAEqP83CgZChFBaBaiI+Pt+7du/trSMrjjz/u/oeukwTxBlxKYR8wYIB99NFH7oRg2bJlrg6wlq1bt/oHZMOHD3f3XXbZZfmeSycHBQdCpT05UIOv8847z/+YTg6WL1/uUjo5OQBQ3jQYUePVa6+91tXmffPNN13T1sAavampqe62Bkuqhb5+/Xo3CNNP/bvasmVLV/5Dv+vfzjfeeMOVE1FZEdUF1sUj/VtakNbTv8EffvihKzmyPwUHUzJ37lz3b/4jjzzijq9gg1kAQMXgHBwASofzcKDkwpS2UYr1ASCkffbZZ3buuee6QYpmPrz11lvWsWNH/6DniCOOcIMiDVxWrFjhBjjXXXedf7aYZjekpKS4/9k/9NBD/tlimimh+pSF0cmBmmjphEODogsvvLDUx60BoOpotmrVyjUOU31gAAhWa9eudXXJA2foBtK/t7t27bK6devu85gGZO+++677t/nEE088oOfXQK2oGWgAgIrHOTgAVAzOw1GdENgAUG1p1lhhs7oKrrNnzx7XNOtA1+HkAAAAANiLc3AAAFAWCGwAAAAAAAAAAICQwdQDAAAAAAAAAAAQMghsAAAAAAAAAACAkEFgAwAAAAAAAAAAhAwCGwAAAAAAAAAAIGQQ2AAAoBJt3brVzjzzTKtRo4Ydc8wxtnz58so+JAAAAKDK4zwcAEIbgQ0AACrRiBEjLDc315YtW2bnnHOOnX322ZaTk7Pf7Vq1amULFiyokGMEAAAAqhrOwwEgtBHYAACgkqxatcrmzp1rL774orVt29ZuvfVW27Ztm3377beVfWgAAABAlcV5OACEPgIbAABUkoULF1qbNm2sYcOG7nZERITdcMMNFhsba++99561b9/epcaffPLJtmHDBrfOwIEDLSwszNauXWt9+/Z1vz/44IP+fc6bN8+OOOIIq1Onjo0cOdIyMzP9j/3zn/+0Ro0auefU4K1BgwZuhpo8/fTTbvZZ48aN7d5777W8vDz/dnqOn376ya6++mpLTEy0tLQ0d7+O65FHHvGvp4Fhjx49KuCdAwAAAA4c5+EAEPoIbAAAUEk0SNKgJtA999zjBjznn3++jR071s0m0zr333+/e/xf//qXbd++3Zo3b26zZ892v990003uMa17xhlnuEHZd999Z4sWLfIPeLTeVVddZW+88YYbML3++uv2ww8/uEGb9jl+/HibMWOGffDBB+6xJ554It9xXXnllW5wp3U14JOhQ4fav//9b/8677zzjjtuAAAAIJhxHg4AoY/ABgAAlSQ7O9vNDiuoZs2abibYBRdcYL///rubmbVy5Ur3mAY1mgUWHh7u1tPvMTEx7rE333zTunTp4maItWvXzkaPHm3vv/++e+y3336zWrVq2UknneQGPZs2bXIzwDQ4ev755+3GG2+0E0880bp27eoGXM8++2y+Y9Lss6lTp7rZad4xqxbxkiVLbP369bZr1y779NNP7bzzzquAdw4AAAA4cJyHA0Doi6zsAwAAoLrSYGjHjh357jvyyCNderoGJxoMHX744W4gpMaG+5OSkmJLly51+xU1P9SgS5TertliGqBpPaWye6n369atc7PTPIcccoj9+eef+fZ9/fXX7/N89erVc4MwzRDTbLZu3bpZs2bNDvDdAAAAACoG5+EAEPoIbAAAUEk0q0szwDTLSoMmDYDW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0b17dzvqqKOsdevW7oK8zmFfffVVl2X80ksvuckwmlhUo0YNd95W2Lm8ztd03qZzMu/87Mgjj7SkpCR3IT/wvK1mzZruvE2TZIKNJirpfFfnqZrQIwry6FzVy4S+4oor/JOcZs+evU82yyeffOImJ51wwgnutsYbWl/n2P/85z/d/TpX122NO3SO7QUnFi1a5D6HgovGKIWJjIx0SyB9vsom18QnZcwo+CG//PKLmzC1adMm95q8RZO2pLgxBwAUygcAQDnauXOn77vvvnPL4MGDfYceeqj/9vr16yvsODIzM32nn366pt77Pv3003yPZWRkuOM68sgjfR988IHv9ttv9zVu3Ni3Y8eOffZz8skn++Li4nwJCQmFLrVq1XLPsW7dukKP4+yzz3br7dmzx/fII4+4dYtb3nnnHf+2v/76q+/nn3/2HXfccb5rrrnGl5yc7D/Gv/76y3fGGWe439PT0319+vTxbd68ucj348orr/TdeOON7vdXX33V17JlS/9jt9xyi2/EiBH7/F5QXl6er1evXr4XX3wx3/uclZXlW7NmjTt+ff66fcMNN/giIiKKXbSt57XXXnP3vfLKK+62vjv7e6+GDx++zzGecMIJvrFjx/pvX3vtte61eu/NwoUL3eeZkpKyz7Y67oLf0Ztuusl34okn+tLS0ny5ubn5Hvviiy/cNoF0TH//+9+L+BQAAABCm859TjvtNF+rVq3c+ZTOnWJiYvZ73vbf//43335Wr17t7l+5cqW7vXXrVnfONnr0aP86V199tW/IkCGFHsf27dvznbvv2rXL165dO9+jjz7qbgeet+m8+aeffvLl5OT4gpXOWT/66CP3u94TvTcas0jNmjXdeafo/P/JJ5/Mt+1ZZ53lu+666/zvyyGHHOKrUaOGG4NoP9o+cOyiz+ubb75x63/11Vf5xjJz5851t//880/f119/7Vu8eLHvhx9+8C1fvtz3448/ujGUxiWLFi3y/f77726bGTNmuG12795doteq8Y3W/+2338rs/QNQPeQPqwIAUMaUAXH00Ue73zVjSjOpvNsVRbOGBg8eXORMI838V/aAyhU1a9bMTjvtNDdDSqndKukUSFkWevz4448vdF/qa3Hfffflyx4IzDr497//7WarKSNCGQHKHtDvmn2m90XHqUwWba+ZU5qZ5tF+NftKs7KUkq5U9YkT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7cqIMiXeeOMNO++881x5KS3XXHONy9xQsGHAgAGut8XLL7/ssjfWrVvntlNpKgU7br/9dhcYUWkp9cvQ795tlbTS759++qnbJjIy0mrUqOH2t2nTJvezqEWlqbR+IJXJUvaISlh16tTJv9/AwIYCIuWNUlQAAAAAAAAAgOpJPTW8TI39NQjX4wnNzHb8abbmc7P2p5bZYZx66qm2YMECO/zww10wYcWKFZaYmOge+/LLL10QQyWifv75Z3/gQOWq1OtCgQZRSakbbrjBZVSIAiVTpkyxk046yf88derUsYkTJ9off/xhbdu2dfsKDF6kp6dbXl6eK001YsSIfP07PMcdd5x99913rmzWq6++an379s0X2IiLi7PyRmADAAAAAAAAAFD9+Hx7G4VbWNGZGgVFRO9df8X7ZocO3H8wpBSOOOIIF1SYMWOGjRkzxgUd1PhbwYbDDjvMNRHPzs52AY1t27a5fhfql+FRiSov40N69eplDRs2zPccWv/66693v3vlqeTHH3+0u+++277//nuX5XHUUUf5e3kU+jZERNjf//53fzBD2yngUVEZG5SiKoZqjB1yyCGuW7w+SHWcPxj6QmqfZeHSSy+1jh072oknnugWRd/K27vvvusieSU9Nr1vig7Onz/f3a/UJx1r7969bfTo0S7KKPpDVORPteQAAAAAAAAAoEJk7jLb+ptZXJ3SbafG4toua3eZHs6aNWtc821dX92yZYvrsaEMC5WOUpNwlX/asGGDC2qISkk1adLElaxq3bq1Pfvss/bFF1+4DA8tH330kQtiKBjiyc3NLbQ3hspZ6bnUk0P9PBTU0LoKVBRF2SN33HGHtWjRwh2rd62XwEYQUHTq888/dx3lVdcsmKiRi9KTtLz11ltBE9jwjk3vm45LQQy56KKLXOqT/rj0x6c/OFFak/5A3nvvvSL3p8d37tyZbwEAAAAAAACAA5aTaZaXaxYWUbrttL62y84o08PRtVNlWciOHTvc9einnnrKlYq67bbbbOTIkS5Lw7Nq1Spr1qyZazauoMgZZ5xhgwYNsh9++ME1IldGhq7TqlyV57///a/FxMS4jAvt11vmzZvnykqp8bd3n7a7+uqrLZCeR03JVfZK5bMUxPj222/txRdfdI+TsRFkvHplovphSqvxMiX0BVFwQak+Q4cOtc6dO9vNN9/s1lUttB49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j9agQQNXHmnq1Kl2xx13uEVZBBdddJFbTxfqn376aRcgyc3NdZkGurCvwMmHH37oMhA2b95sbdu2LfbY7rnnHnfxXhRASEtLs5tuuskdT+3atV0AQgEKBVaURaFgwA8//GBhYWHm8/nswgsvtC+++MJat27tLv4raKCyUQoS/Pnnn/bXX3/Z8uXLLTEx0QVuVBJKi/ZbHAVo/vOf/7jXrGCGbm/fvr3Ex6ZMj2uvvdYFOerWretKbgVSoOWBBx6w9957z93W8/ztb3+z888/372H+lx++ukn997o80hNTXWlxFTG6pZbbrERI0bYBRdc4AJNX375ZaFZOJMmTXIZMQAAAAAAAJUmMsYsPGJvlkRpaH1tFxV78M3Ki+rr4TUr375m7/pDXzaLrlH65wOAEBByGRvKEtCFfmUodOvWzd0XHh5ud955p11yySWWnp7uFunXr58LaERHR7usBfntt99cCSvxej/oYruyIVSiSespM0GZHY0aNXIZD7qYr8ciIoqPxuvCuwIOWvScq1atckEEba9tla2gYIEkJCTYXXfd5QIHsmXLFhcguPzyy11mhTIU1q5d64IYem1DhgxxmRs1apT+f0g6hoULF9ppp51mn3/+ubtd2mOrWbOmez/0Pijo4lHPDgVg1KtEAQxRYEiBoOnTp/uzNRTYUEBDgSeV69J+FJzSe+99Dsq2Oeusswp9DWPHjnXbe4tKkQEAAAAAAFQolZFKame2J7V022l9bRddMzSblQNAkAm5wIboArsujnvZEdddd53L5PjnP/9pcXFx/vUKCwKoDJNXXunbb791P4844ghbvHixC5bs2bPHXWzv0KHDQR+nMjxWr17tLsQrE0TBBQVNRAGUwEBJ/fr1rUWLFq5EkwIjY8aMsebNm7sL+ArcqOyUggcKcnj0WtXAW5TxURQFMLQv/VRAQT9Lc2z16tVzpZ8U4NB75L1/2m748OE2cOBAV/IrkAIxjz76qL+/ht5PLXptKqelTBMFfzp16mRff/21W+eFF16wG264odDXoONWZkngAgAAAAAAUKEUODh8iJnlmeVml2ybXJUP95l1OH3/gYlga1YOAEEq5EpReW6//XaXZaESSRdffLEra6TsBpU+UjBAF/ILo5JGI0eOtClTprhsDDXXPuyww1wmiEoxiYIHCjIcLGVDqPyV+lKISiypf0ZhlB2h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rr76ahszZoxrFF5wf96+iqLeHOPHj9/n/i1btlhGRoYF+8BYZbx0MSM8nGIFCG58XxFK+L4ilPB9DS27du0q8boENgAAAAAgSCUmJrqG3wUHfNHR0UVu8/rrr7tG4S1atPAHJ/r06eMCG9qfghIl3dfYsWPt5ptvzpex0bx5c6tfv77L9gj2CxkK7OhYuZCBYMf3FaGE7ytCCd/X0KJJNyVFYAMAAAAAglT37t3thRde8N9es2aNKw2lAEVxA/jNmzf7b2/atMlyc3P9+1u4cKFdccUV7vbSpUutadOmRe5L2R0FM0ZEFwZC4eKALmSEyrECfF8RSvi+IpTwfQ0dpfmM+DQBAAAAIEidcMIJLkvipZdecrcnTpxo/fr1c302duzY4Q9YBOrdu7c9+OCDNmPGDHv++edt9OjRdvrpp7vHzjnnHNdM/Mcff7Tdu3fbE088YQMGDKjw1wUAAAAcDDI2AAAAACBIqSfGiy++aMOGDXN9MjSLbcGCBe4x9dhQxkWXLl3ybXP//fe7YMhtt93mSk0pcKG+G9K5c2e74YYb7Oijj3ap/u3atXOBDwAAACCUENgAAAAAgCCmbIvff//dlixZYj169LCkpCR3v5pgFkaNw1955ZUi9/fAAw/Y8OHDbf369a73RnE9NgAAAIBgRGADAAAAAIJco0aNbNCgQWW2vw4dOrgFAAAACEX02AAAAAAAAAAAACGDwAYAAAAAAAAAAAgZBDYAAAAAAAAAAEDIILBRjV166aXWsWNH9/usWbMsLCzMWrVqZX/99Ve+9RYsWOAaFJ544ol2zDHH2M0331zsfiMiIty6xx9/vA0ePNi2b9/u7n/yySetZ8+edtxxx9kHH3zgX/+1116zI444olxeIwAAAAAAAACgaiGwUc398ssvlpaWZkuWLCl2PQUjFOBYtGiR/fDDD/bll18WuW5cXJxbV+soEPL000+7bV5++WX77LPPXFBj1KhR5vP53PrvvfeerVy50lavXl3mrw8AAAAAAAAAULUQ2KjmlLGhoMP3339foqyJrKws2717twtelMS2bdvcuu+//76dc845FhUVZYmJiS7rIz093TIzM+3zzz+3a6+91t59990i96P1du7cmW8BAAAAAAAAAFQ/BDaquR49etjixYtt165dLuBQlIULF7ryUieffLJddNFF1q1btyLX3bNnj78U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PTYAAAAAAAAAAFbdgxrjZ6+wddvSrUlCrLVIjLc68dFWKzbK/dRt3a/HJ8xZ4dZH5SGwAQAAAAAAAACo1uWnlKmxLS3TWibGuyyNwuh+Pb51d6ZbX9uhchDYAAAAAAAAAABUW+qpofJTTevE7bdBuB7Xelr/61VbK+wYUU0CG/fee68dcsghdsIJJ9hRRx1l//rXvw5qfzNmzHD7LAuXXnqpdezY0U488US3nHfeeVbe3n33Xfvjjz/2u94tt9zijikiIsL9HDt2rC1YsMCSkpL8x6tlyZIl+32/rr322n1ec8+ePe2yyy6z7du3u/u95/GW6dOnl8GrBQAAAAAAAID98/l8rlG4FJWpUZC33tzkjW57VLwq3Tx81KhRduutt9q6deuse/fuds4551iwGD9+vJ177rkV9nwKbNSpU8datWpV7HpTpkxxP2vWrOkCGqKfxx13nM2ZM6dMXrOCJzfeeKO9/PLLFhcX53+e4mRmZrrFs3PnzoM6FgAAAAAAAADYnZljq7ekWUJs6S6Va31tl5aVazVjqvRl9qBUZTM2AmVkZFhUVJT7/bvvvnMX6b1MiZycHHdh/eyzz7ahQ4da586d7eabb3brrlixwnr06GEnnXSSzZo1y7+/5557zo499li3vPbaay4TQtkh/fv3t1NPPdUGDRrkMhMOJPjg7feRRx7x369gxPPPP++ObenSpe6+zz77zI4//nj3WsaNG+df98orr7TevXvbMcccYx999JFt27bNvdZ58+a5YIJ+z8rKssp0ww03uOMpjUmTJllCQoJ/ad68ebkdHwAAAAAAAIDqITMnz3J9PosIL74EVUFaX9tlZOeW27GhaFU6lPTMM8/YzJkzbceOHS4AISkpKTZt2jRr166dnXLKKfb999+7+z/99FP78ccfrUGDBtasWTObOnWq3XHHHW4588wz7aKLLnLr/fLLL/b000+7AElubq517drVBR0UOPnwww9dyabNmzdb27Ztiz22e+65x5566in3+/z58y0tLc1uuukmdzy1a9d2AQgFKBRY2bhxo23atMl++OEHV8NN6U0XXnihffHFF9a6dWs7+uijbdiwYdawYUOXVfHnn3/aX3/9ZcuXL7fExEQXuFEpKC3a74FYuHChf1sFfgYOHOgCOYEUcHjvvff2uy8d59ate+vP7dmzx79fBZACgzSBVBLL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w4auObjExMRYnz59/CWo9HvNmjX99wEAAABFUYbv7swcy8zJs5jIcHq9FEBgAwAAAADKyK+//modOnSwU0891fXaeOmll/YOSnfvtn/84x+2bds2/31a9Ptll11W2YcNAACAIJGelWNfrdpq85I32uotaZbr81lEWJi1qV/DBnZqbL3aJll8dPld1g+VgAqBDQAAAAAoI4ceeqh9//339vbbb9vixYvtiiuusKSkJDv++ONt9uzZ1rVrV3v//ffduoMHD7aZM2cS2AAAAICTvD7VJs9faSnb95hCCbVjIy0qItxy83y2PCXVlqWkWrO6cXZr//bWqWlClQqolFbwHAkAAAAAVAFqDq7l7rvvtueff97uvfdeV6Lq2WefrexDAwAAVWzWOqpWUGP87BW2LS3TmtaJcwGNQHXioy07N8/WbUu3CXNW2LjBHcosuFGZAZUDRWADAAAAAMrBq6++aq1bt7bk5GTbsWOHzZo1y9q2beuyNgAAQHAKtVnrqDrfOwUWFNRomRhfZBBNwQY9vnZbult/2vCuB/19rMyAysHIf5QAAAAAgIM2depUu/nmmy07O9tla7Rv397+97//2fnnn2/du3e3GTNmWGZmZmUfJgAAKHCBd/Tr39tD835xs9TDw8xiI8PdT93W/Xpc6wFlScE0ZUsosLC/zCA93rROnFv/61VbyzSgUjCoUTCgsnV3pltf21U2AhsAAAAAUIbUW2PKlCn2+eef2xlnnOG//7rrrnPNxW+//XZ74IEH7Nhjj63U4wQAAPvOWtes9CYJsdYiMd7NVK8VG+V+6rbu92atE9xAWZY9U4aQFBVYKCjq/9abm7zRbR9qAZUKDWyoLuzkyZMP+gl/+OEHe/DBB0u07rvvvmt//PHHPvdre+3nQJx44onWrVs317yvZ8+e9tNPP1mwueCCC8p0f82bN7edO3e6tPcFCxbYeeedZ/Pnzz/g/Wl2mb4PMnbsWPdeHnPMMfb444+7+1q1auUGbJKenm5169a13bt3l9GrAQAAAILb0UcfbT///LPrs1HYgPDcc89145A33nijUo4PAABUnVnrCH3q5aKyZwmxpSsplRAb6bZLy8oNuYBKSGZsdOnSxe64446DCmxoe+3nQD333HP25Zdf2jXXXGPjx4+3YDNz5swy3d8hhxxiv/32m/3555/2yy+/uJ+672B9//33LnCh9/KTTz6xe+65x3Jzc92stDlz5rh1/vvf/1qvXr2sZs2aB/VcStNXcCZwAQAAAIJV7dq1i308OjraOnToUGHHAwAAquasdYQ+Nah3vVxU86wUIsLD3HYZ2bkhFVAJmsDGV1995S5cK/tBNWQVqcnIyLDTTz/devToYaeeeqqdddZZtnnzZre+MgYuvfTSfPu48sorrXfv3m7W/0cffWTbtm1zmRXz5s2zG2+80f2elZXlX1/baz8ezXbSOjqGs88+211sL4k9e/a4AYW8/fbbbnvVu1XgQ/766y+3X72OM888070mUbaCskaGDBliI0eOdPepdq5+79Onj8tg8DIWFi5caMcdd5y7b9iwYe7Cv7cP3a/ne+211/IdlzIeAul4lKauxVtX74ECCSeddJK1a9fOpbkXRUEMva8nnHCCC2xs3LjRWrZs6WaR9e3b1733F198sfvcRK9Zs8d0fN57sWLFCvc+6PnU9FDU9NDL0tBnpsyMiIiIfIEN/fTS7z/77DP3Pmi/48aNc/fl5OS4z1/fIb0X+j4VZtKkSZaQkOBflIUCAAAAAAAAHIxQn7WO0BcTGe4a1Ofmle67lJu3t7F9bFRESAVUgiKwoT9cXRB/9dVX7euvv3YXzN9880138TwtLc2++eYbF5DQRewGDRoUug9dENfFb834f++999yF/8TERBe4GDhwoD322GPudy8AUZgrrrjCBRp0DLrwrpq2xbn66qvt8MMPt5dfftldMNcx3HDDDfbhhx+67APta8eOHe53BQUUnEhOTnbre1566SV76qmn7MUXX3S3X3jhBXfsung/ZswY/4X7f/7znzZ8+HC3r6FDh/pLMj355JPu+fTaYmJiijxWvZdPP/20C1x8+umndv/997uMC1Fg4uOPP3b1eV9//fUi96HX8J///McGDx5sP/74o3u+yMhI975pf1988YU1a9bMvdeet956y30meq+8LBktuk+fT8HvwbXXXuv2JQqgKNik91DBKQWEtM6FF15or7zyivucPvjgA3f8ev8UDFFAQyWu9HoKo5JXqamp/mXdunXFfsYAAAAAAABAVZ+1jtBXMybS2tSvYTszSlfaLDUjx21XIzoipAIqQRHYUEZDeHi4tWnTxn9BW70vvJ4OyjBo3759obVlPbpIfuedd7rsB83cr1GjRqmPQxfIlU0gKi+lrIDi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+eCDDyrgVQIAAAAAAAAAQlFkZR9AMHn77bdt5cqVFhMTU6L1H3vssTI/huOOO87mzJlj2dnZLrgyYsQIq1WrllWk119/3QUcBg8e7IItosDGWWedddDBlueee866dOnigieTJk2yyy67zFq3bu1/HgAAAAAAAAAAikPGRoBTTjnFJk6cmO8+ZQ8oe6J379527bXX5ntM2QUKAEhOTo4deuihlpWV5W7fcMMN9s4777jf77zzTjv++OPdfr755psSHcvOnTvN5/NZRESErV692k444QSXydG/f3/32OLFi919nk6dOrkMitTUVDv33HPduno9mzdvdo+///777vl79uzpMk0qU2RkpF1zzTU2b968Em+TmZnpXnfgAgAAAAAAAACofghsBFB2xFdffeUPVogCAzNnzrT33nvPZs+e7Q8UFHax/rTTTrNPPvnE3f7iiy9s0KBB9uGHH7pgxpdffmnPP//8foMKCxcudAGTww47zK6++mqLj4+3tWvX2vjx423u3LlWu3ZtFxA4+uijXSmnX3/91e27ffv2rlTUAw88YEcccYR9+umnLuNi6tSpbr8vvvii3X333fb111/bUUcdZXl5eaV+fxSo8cpFLVq0yP788898JaS06JhLomHDhrZ161b3+5o1a/zb6z0qjLI7EhIS/Evz5s1LffwAAAAAAAAAgNBHKaoAUVFRduutt9qDDz7ov08loUaPHu0CCuHh4Zaenl7k9pdccokrtaQ+GSopFR0dbcnJyf4L97J79+4SlaLas2ePyxI5+eST3X50YV/ZG3/99Zf/GP72t7+5gIXuGzVqlLtPz7dx40YX2FDgQ5kcXr8LBT3UL0PHotdSWoWVojrQElJbtmyxevXqud9LUopq7NixdvPNN/tvK2OD4AYAAAAAAAAAVD8ENgq4/PLLXQBAQQQFNVRSSuWdFGjo3Llzsdt27drVVq1a5Xp1XHzxxe4+BRZUFuof//iH7dq1y5544okSHUdcXJzL1lAgROWxJkyY4EpPnXfeef51LrjgApd9oebb06dP9z+f7leQ5ccff7Rly5a5+xUsefXVVy02Ntb1uBg2bJi1adPGKkNubq49++yzNmTIkBJvo74nJe19AgAAAAAAAACouihFVYCyI+644w5/BocCCcqi0E+VQFq3bl2x26sHxvz5861Hjx7utspT1a9f3/r06eMy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2bJlrUWLFta2bVtbt25dos/Yt99HH300U98PAAAAACDnij552r5e9197auZqu3fiUvvH5GXuX93X43oeAADkPAFdsVGvXj13S2uwoYvxlSpVSvR4v379zqsNb775pjVs2NCmTZtmgwYNshkzZlggmT59eqbu75577nE3hQwKp/TeJW/evLZo0aLz2vett95qY8eOtdmzZ9tNN91kmzZtSvQZAwAAAACQVmt3RdnIeRts58HjptqMghGhFhYSbLFx8fbrzihbvTPKyhXJa09dV8NqlS2U3c0FAABeXWPjhx9+sCuuuMJVPzzxxBOuVDQmJsY6dOhgTZs2ddUBuvi9Z88et70upN9///2J9vHggw/aVVddZY0bN7b58+fbgQMH3EX4L7/80nr37u1+PnnypH97vT7hBXlVXWgbtaFjx44WHR2dprYfP37cwsPD3c+zZs1yr2/UqJG7KC/79u1z+9X7uOWWW9x78lWvqGqkffv21r17d/fYqVOn3M9XX321qwbZuHGje3zJkiXWrFkz91iXLl0sNjbWvw89rt/37rvvJmpX0iBH7WnSpIm7+bbVZ/Dcc8/Ztddea9WqVbPvvvvOspM+C9mwYUOaX3PixAk7fPhwohsAAAAAIPeGGoNmr7MdB6KtTKEIq1A00gpHhluBiDD3r+7rcT0/eM46tz0AAMg5LljFhkIMVQIojLj44ovdhfsPPvjALrnkEjt27Jj99NNP1qpVKxs2bJiVLFky2X0oxJgzZ45t377dBQm//vqrFS1a1B+A6KZwITXdunWzl19+2QUQqh5Yvny5mx4pJT169HDhR/Hixe29995zbXj88cddQKIqBrX/zjvvtO+//96qVKliEyZMcOHBsmXL/PuYNGmSzZs3zypWrOjujx8/3oUW3377rX366ac2cOBAV3nx/vvvW9euXa1Xr1728ccf29GjR61QoUI2ZswYV92gYOWLL75Isa2///67vfbaa+53a//169f3v7f169fbggULbObMma76JLX3nFKw4/tsFZCozQ8//LB/SqmE77Vy5crn3F+pUqVs//79/s+4QIEC7rv86KOPkt1++PDhrmIGAAAAAJC7aXopVWocOHbCKhaNTHEtDVVv6PltB6Ld9q93rW+R4QE9cQUAAAi0ig0FEcHBwS7UEF1Y19oX5cuXd6PvVWFQo0YNq1OnTor70IXv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xDXXXGMNGjSwK6+80po3b26//fabBZrOnTtn6v4mT55sZcuWtauvvtoaNmzo/x41oq5Tp07WokULa9eune3du9f/mtatW9uoUaMytR0AAABIn7i4OFflEBwc4tagUIih+wooqlW7zFasOGTz52922+oxnxMnYmzDhtX+io09e3a7x2NijttTT3V1j/Xr94CdOpW4gqJIkWL2xhufWsOGLdzvq1u3sU2ZssBq1Wpg48aNs9KlS9szzzyTbFsVXMTExNiRI0fs0KFDZ910LFqkSJEs/bwAAAAAZI8cX7FRr149d0trsFG4cGGrVKlSosf79et3Xm1488033QX+adOm2aBBg2zGjBkWSKZPn57p+7z11ltt7NixbhTdpZdeanfeeacLLpo2bWpPPPGEO1EdPny4jR492p14LlmyxJ00P/nkk5neFgAAAKTNmjXLrVu3thYcHGxHjkTZNddUtJIly9igQW+ctRB6wioJBRErVx7x3z94cL917NjIRo2aZiVKXGQDB/awwYPHWf78Bf3b/PnnBrv++kuscOFi7v6YMc8n2f+Zf0uWLOmmlXr22WfdzUfHjldddZV17NjR/vWvf1l4eHii1584ccLy58+fWR8NAAAAgADiuWDjhx9+cOXkGj2mi+S6WK6TFlUC7Nmzx43KioiIcGGCToIWLVrkKgh083nwwQft999/d68bNmyY1a9f350Q6TFVZijcmDdvnv/k6P7773c3VV+Iqi4eeeQRdzKlUWTvvvuuRUZGnrPtWvzQt89Zs2a5i/qaT7h79+7Wo0cPN0/w7bff7kaeab8aMffZZ5+56hW9J733UqVK2YQJE9zrevbsaX/88YcLD95++22rXr26CwgUHOhEs3z58q5t+ln7+Oqrr+z06dP2+OOP29133+1vl4KchJUq+uy0P3n00Ufdtnr/KvdfvHix7dixw813rMqLc9FIOrU1T5487r3oPciNN95o+fKdmbrg888/tzvuuMN9V/oMihcvftZ+9F3p5sMikgAAAJlPFRPLlx+0YcOesK+//si++ebMMeJvv/2S7HRPPlpHQ8eu4eF53P3jx4/Ztm2brFu3612YoftdulxlMTHR1qLFDTZgwKsWGhrqprJaunSfO0bV/YSqVfvfzzoWTfq8jqs1VZWOy3VsqmPYli1b+p/XsaOOoQEAAADkPJ4KNhRm3HPPPTZ/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Y58Z3Qf9NevRXzNnH+l9Df01Y+ivmbMP+uuFkRv6a6E0Hocz/AgAAAAAcF4eeeSRTN82Ldul5/d6XXa+16z43Zmxz4zug/6a9eivmbOP9L6G/pox9NfM2Qf99cKgv/4PU1HBk1RGpvQuKioqR6StuLDoPzgf9B+cD/oPzgf9B0gf/puBl9Bf4SX0V3gJ/TXnomIDnpQnTx577rnn3L9AetF/cD7oPzgf9B+cD/oPkD78NwMvob/CS+iv8BL6a85FxQYAAAAAAAAAAPAMKjYAAAAAAAAAAIBnEGwAAAAAAAAAAADPINgAAAAAAAAAAACeQbABAAAAAMg17rnnHmvevLm98cYb2d0U4Jz2799vl112WXY3AwCAgEOwgYC0du1aa9SokRUpUsT69OljaVnjftasWVaxYkUrU6aMvf/++xekncg5/WfQoEFWtGhRy5Mnj91666125MiRC9JW5Iz+43Po0CG76KKLbOvWrVnaRuS8/hMXF+cuso0aNSrL24ic03/0fM+ePd3/vwoXLmz333+/HT9+/IK1F/CiDz/80EqVKmU//vijffXVVxYVFZXdTQJSpHOS++67zw4ePJjdTQGAHGXPnj02f/58rv14HMEGAs6JEyesffv21qBBA1u+fLmtW7fOJk+efM4LAV27drUBAwa4E5SBAwfahg0bLlib4e3+M23aNHf78ssv7bfffrP169fbCy+8cMHaDG/3n4R0IfLvv//O0jYiZ/afcePGuYtrjz32WJa3Ezmn/0ydOtUd76xcudIWL17s/h82fPjwC9ZmIFDs27fPKleunGhgQUpB4bfffmu33Xab+/nKK6+0FStWZFu7kTulp78GBwe7v/UFCxbMxhYDaRvg1bZtW2vVqpXde++9btAOEKi2bNnijgU0yEF99vTp09ndJGQQwQYCzty5c93FndGjR1uVKlVs2LBhNnHixFRfM2HCBGvZsqV1797dateubb169XIHgMh9MtJ/duzYYVOmTLHGjRtb1apV7c4773QXiZD7ZKT/+Hz33Xf22WefWbFixbK8nchZ/Wf37t329NNP25gxYywsLOyCtBU5o/8sXbrUbr/9dlexquOfW265xTZt2nTB2gwEykXim266KdFF4tSCwmPHjrkKb9HFYo3YBAK1v+bLl8+FHUCg00BBHc8uWLDAVY+qLwOBSoOBNLBMg6IrVKhg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",
      "text/plain": [
       "<Figure size 1600x1200 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "================================================================================\n",
      "模型性能综合对比统计\n",
      "================================================================================\n",
      "\n",
      "机器学习:\n",
      "  平均准确率: 0.7419 ± 0.1058\n",
      "  平均AUC: 0.8124 ± 0.1049\n",
      "  平均训练时间: 503.03 ± 769.10秒\n",
      "  最佳准确率: 0.8823 (Logistic Regression_PCA)\n",
      "\n",
      "深度学习:\n",
      "  平均准确率: 0.7519 ± 0.1681\n",
      "  平均AUC: 0.8196 ± 0.2132\n",
      "  平均训练时间: 66.17 ± 30.88秒\n",
      "  最佳准确率: 0.8543 (CNN)\n",
      "\n",
      "====================================================================================================\n",
      "IMDb电影评论情感分析研究结果总结\n",
      "====================================================================================================\n",
      "\n",
      "1. 数据集概述\n",
      "--------------------------------------------------\n",
      "训练集样本数: 25000\n",
      "测试集样本数: 25000\n",
      "类别平衡性: 正面50.0%, 负面50.0%\n",
      "\n",
      "2. 特征工程结果\n",
      "--------------------------------------------------\n",
      "TF-IDF特征维度: 5000\n",
      "PCA特征维度: 3901\n",
      "Word2Vec特征维度: 300\n",
      "PCA保留方差比例: 0.9500\n",
      "Word2Vec词汇表大小: 45065\n",
      "\n",
      "3. 机器学习模型性能\n",
      "--------------------------------------------------\n",
      "TF-IDF最佳模型: Logistic Regression (准确率: 0.8817)\n",
      "PCA最佳模型: Logistic Regression (准确率: 0.8823)\n",
      "Word2Vec最佳模型: Logistic Regression (准确率: 0.8504)\n",
      "\n",
      "机器学习最佳模型: Logistic Regression (PCA)\n",
      "最高准确率: 0.8823\n",
      "对应AUC: 0.9524\n",
      "\n",
      "4. PyTorch深度学习模型性能\n",
      "--------------------------------------------------\n",
      "MLP_PCA: 准确率 0.8246, AUC 0.9182, 训练时间 67.6秒\n",
      "MLP_Word2Vec: 准确率 0.8284, AUC 0.9263, 训练时间 46.0秒\n",
      "LSTM: 准确率 0.5005, AUC 0.4999, 训练时间 109.3秒\n",
      "CNN: 准确率 0.8543, AUC 0.9339, 训练时间 41.8秒\n",
      "\n",
      "PyTorch深度学习最佳模型: CNN\n",
      "最高准确率: 0.8543\n",
      "对应AUC: 0.9339\n",
      "\n",
      "5. 模型比较结论\n",
      "--------------------------------------------------\n",
      "机器学习模型性能更优: Logistic Regression (PCA) vs CNN\n",
      "性能差异: 0.0280\n",
      "\n",
      "6. 特征方法效果对比\n",
      "--------------------------------------------------\n",
      "1. TF-IDF: 平均准确率 0.7766\n",
      "2. Word2Vec: 平均准确率 0.7349\n",
      "3. PCA: 平均准确率 0.7144\n"
     ]
    }
   ],
   "source": [
    "class MLPModel(nn.Module):\n",
    "    \"\"\"多层感知机模型\"\"\"\n",
    "\n",
    "    def __init__(self, input_dim, hidden_dims=[512, 256, 128], dropout_rate=0.3):\n",
    "        super(MLPModel, self).__init__()\n",
    "\n",
    "        layers = []\n",
    "        prev_dim = input_dim\n",
    "\n",
    "        for hidden_dim in hidden_dims:\n",
    "            layers.append(nn.Linear(prev_dim, hidden_dim))\n",
    "            layers.append(nn.ReLU())\n",
    "            layers.append(nn.Dropout(dropout_rate))\n",
    "            prev_dim = hidden_dim\n",
    "\n",
    "        layers.append(nn.Linear(prev_dim, 1))\n",
    "        layers.append(nn.Sigmoid())\n",
    "\n",
    "        self.model = nn.Sequential(*layers)\n",
    "\n",
    "    def forward(self, x):\n",
    "        return self.model(x)\n",
    "\n",
    "\n",
    "class LSTMModel(nn.Module):\n",
    "    \"\"\"LSTM模型\"\"\"\n",
    "\n",
    "    def __init__(\n",
    "        self,\n",
    "        vocab_size,\n",
    "        embedding_dim=100,\n",
    "        hidden_dim=128,\n",
    "        num_layers=2,\n",
    "        dropout_rate=0.3,\n",
    "    ):\n",
    "        super(LSTMModel, self).__init__()\n",
    "\n",
    "        self.embedding = nn.Embedding(vocab_size, embedding_dim, padding_idx=0)\n",
    "        self.lstm = nn.LSTM(\n",
    "            embedding_dim,\n",
    "            hidden_dim,\n",
    "            num_layers,\n",
    "            batch_first=True,\n",
    "            dropout=dropout_rate,\n",
    "            bidirectional=True,\n",
    "        )\n",
    "        self.dropout = nn.Dropout(dropout_rate)\n",
    "        self.fc = nn.Linear(hidden_dim * 2, 64)  # *2 因为是双向LSTM\n",
    "        self.relu = nn.ReLU()\n",
    "        self.classifier = nn.Linear(64, 1)\n",
    "        self.sigmoid = nn.Sigmoid()\n",
    "\n",
    "    def forward(self, x):\n",
    "        embedded = self.embedding(x)\n",
    "        lstm_out, (hidden, cell) = self.lstm(embedded)\n",
    "\n",
    "        # 使用最后一个时间步的输出\n",
    "        output = lstm_out[:, -1, :]\n",
    "        output = self.dropout(output)\n",
    "        output = self.fc(output)\n",
    "        output = self.relu(output)\n",
    "        output = self.classifier(output)\n",
    "        output = self.sigmoid(output)\n",
    "\n",
    "        return output\n",
    "\n",
    "\n",
    "class CNNModel(nn.Module):\n",
    "    \"\"\"CNN模型\"\"\"\n",
    "\n",
    "    def __init__(\n",
    "        self,\n",
    "        vocab_size,\n",
    "        embedding_dim=100,\n",
    "        num_filters=100,\n",
    "        filter_sizes=[3, 4, 5],\n",
    "        dropout_rate=0.3,\n",
    "    ):\n",
    "        super(CNNModel, self).__init__()\n",
    "\n",
    "        self.embedding = nn.Embedding(vocab_size, embedding_dim, padding_idx=0)\n",
    "\n",
    "        self.convs = nn.ModuleList(\n",
    "            [\n",
    "                nn.Conv1d(embedding_dim, num_filters, kernel_size=fs)\n",
    "                for fs in filter_sizes\n",
    "            ]\n",
    "        )\n",
    "\n",
    "        self.dropout = nn.Dropout(dropout_rate)\n",
    "        self.fc = nn.Linear(len(filter_sizes) * num_filters, 64)\n",
    "        self.relu = nn.ReLU()\n",
    "        self.classifier = nn.Linear(64, 1)\n",
    "        self.sigmoid = nn.Sigmoid()\n",
    "\n",
    "    def forward(self, x):\n",
    "        embedded = self.embedding(x)  # (batch_size, seq_len, embedding_dim)\n",
    "        embedded = embedded.transpose(1, 2)  # (batch_size, embedding_dim, seq_len)\n",
    "\n",
    "        conv_outputs = []\n",
    "        for conv in self.convs:\n",
    "            conv_out = F.relu(conv(embedded))  # (batch_size, num_filters, conv_len)\n",
    "            pooled = F.max_pool1d(\n",
    "                conv_out, conv_out.size(2)\n",
    "            )  # (batch_size, num_filters, 1)\n",
    "            conv_outputs.append(pooled.squeeze(2))  # (batch_size, num_filters)\n",
    "\n",
    "        output = torch.cat(\n",
    "            conv_outputs, dim=1\n",
    "        )  # (batch_size, len(filter_sizes) * num_filters)\n",
    "        output = self.dropout(output)\n",
    "        output = self.fc(output)\n",
    "        output = self.relu(output)\n",
    "        output = self.classifier(output)\n",
    "        output = self.sigmoid(output)\n",
    "\n",
    "        return output\n",
    "\n",
    "\n",
    "# PyTorch数据集类\n",
    "class TextDataset(Dataset):\n",
    "    def __init__(self, texts, labels):\n",
    "        self.texts = texts\n",
    "        self.labels = labels\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.texts)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        return torch.tensor(self.texts[idx], dtype=torch.float32), torch.tensor(\n",
    "            self.labels[idx], dtype=torch.float32\n",
    "        )\n",
    "\n",
    "\n",
    "class SequenceDataset(Dataset):\n",
    "    def __init__(self, sequences, labels):\n",
    "        self.sequences = sequences\n",
    "        self.labels = labels\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.sequences)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        return torch.tensor(self.sequences[idx], dtype=torch.long), torch.tensor(\n",
    "            self.labels[idx], dtype=torch.float32\n",
    "        )\n",
    "\n",
    "\n",
    "## 5.2 PyTorch深度学习评估器\n",
    "\n",
    "\n",
    "class PyTorchDLEvaluator:\n",
    "    def __init__(self):\n",
    "        \"\"\"\n",
    "        PyTorch深度学习模型评估器\n",
    "        \"\"\"\n",
    "        self.results = {}\n",
    "        self.models = {}\n",
    "        self.device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "    def prepare_sequence_data(\n",
    "        self, train_tokens, test_tokens, vocab_size=10000, max_length=500\n",
    "    ):\n",
    "        \"\"\"\n",
    "        准备序列数据用于LSTM和CNN\n",
    "        \"\"\"\n",
    "        # 重新组合文本\n",
    "        train_texts = [\" \".join(tokens) for tokens in train_tokens]\n",
    "        test_texts = [\" \".join(tokens) for tokens in test_tokens]\n",
    "\n",
    "        # 创建词汇表\n",
    "        all_words = []\n",
    "        for tokens in train_tokens:\n",
    "            all_words.extend(tokens)\n",
    "\n",
    "        word_freq = Counter(all_words)\n",
    "        most_common = word_freq.most_common(vocab_size - 2)  # 保留位置给PAD和UNK\n",
    "\n",
    "        word_to_idx = {\"<PAD>\": 0, \"<UNK>\": 1}\n",
    "        for word, _ in most_common:\n",
    "            word_to_idx[word] = len(word_to_idx)\n",
    "\n",
    "        # 转换为序列\n",
    "        def tokens_to_sequence(tokens, word_to_idx, max_length):\n",
    "            sequence = []\n",
    "            for token in tokens[:max_length]:\n",
    "                sequence.append(word_to_idx.get(token, word_to_idx[\"<UNK>\"]))\n",
    "\n",
    "            # 填充或截断\n",
    "            if len(sequence) < max_length:\n",
    "                sequence.extend([word_to_idx[\"<PAD>\"]] * (max_length - len(sequence)))\n",
    "\n",
    "            return sequence[:max_length]\n",
    "\n",
    "        train_sequences = [\n",
    "            tokens_to_sequence(tokens, word_to_idx, max_length)\n",
    "            for tokens in train_tokens\n",
    "        ]\n",
    "        test_sequences = [\n",
    "            tokens_to_sequence(tokens, word_to_idx, max_length)\n",
    "            for tokens in test_tokens\n",
    "        ]\n",
    "\n",
    "        return np.array(train_sequences), np.array(test_sequences), word_to_idx\n",
    "\n",
    "    def train_model(self, model, train_loader, val_loader, epochs=10, lr=0.001):\n",
    "        \"\"\"\n",
    "        训练PyTorch模型\n",
    "        \"\"\"\n",
    "        model = model.to(self.device)\n",
    "        criterion = nn.BCELoss()\n",
    "        optimizer = optim.Adam(model.parameters(), lr=lr)\n",
    "        scheduler = optim.lr_scheduler.ReduceLROnPlateau(\n",
    "            optimizer, mode=\"min\", factor=0.5, patience=2\n",
    "        )\n",
    "\n",
    "        best_val_loss = float(\"inf\")\n",
    "        patience_counter = 0\n",
    "\n",
    "        for epoch in range(epochs):\n",
    "            # 训练阶段\n",
    "            model.train()\n",
    "            train_loss = 0.0\n",
    "            for batch_inputs, batch_labels in train_loader:\n",
    "                batch_inputs = batch_inputs.to(self.device)\n",
    "                batch_labels = batch_labels.to(self.device).unsqueeze(1)\n",
    "\n",
    "                optimizer.zero_grad()\n",
    "                outputs = model(batch_inputs)\n",
    "                loss = criterion(outputs, batch_labels)\n",
    "                loss.backward()\n",
    "                optimizer.step()\n",
    "\n",
    "                train_loss += loss.item()\n",
    "\n",
    "            # 验证阶段\n",
    "            model.eval()\n",
    "            val_loss = 0.0\n",
    "            with torch.no_grad():\n",
    "                for batch_inputs, batch_labels in val_loader:\n",
    "                    batch_inputs = batch_inputs.to(self.device)\n",
    "                    batch_labels = batch_labels.to(self.device).unsqueeze(1)\n",
    "\n",
    "                    outputs = model(batch_inputs)\n",
    "                    loss = criterion(outputs, batch_labels)\n",
    "                    val_loss += loss.item()\n",
    "\n",
    "            avg_train_loss = train_loss / len(train_loader)\n",
    "            avg_val_loss = val_loss / len(val_loader)\n",
    "\n",
    "            print(\n",
    "                f\"Epoch {epoch+1}/{epochs}, Train Loss: {avg_train_loss:.4f}, Val Loss: {avg_val_loss:.4f}\"\n",
    "            )\n",
    "\n",
    "            # 学习率调度\n",
    "            scheduler.step(avg_val_loss)\n",
    "\n",
    "            # 早停\n",
    "            if avg_val_loss < best_val_loss:\n",
    "                best_val_loss = avg_val_loss\n",
    "                patience_counter = 0\n",
    "            else:\n",
    "                patience_counter += 1\n",
    "                if patience_counter >= 3:\n",
    "                    print(\"Early stopping triggered\")\n",
    "                    break\n",
    "\n",
    "        return model\n",
    "\n",
    "    def evaluate_model(self, model, test_loader):\n",
    "        \"\"\"\n",
    "        评估PyTorch模型\n",
    "        \"\"\"\n",
    "        model.eval()\n",
    "        all_predictions = []\n",
    "        all_probabilities = []\n",
    "\n",
    "        with torch.no_grad():\n",
    "            for batch_inputs, _ in test_loader:\n",
    "                batch_inputs = batch_inputs.to(self.device)\n",
    "                outputs = model(batch_inputs)\n",
    "                probabilities = outputs.cpu().numpy().flatten()\n",
    "                predictions = (probabilities > 0.5).astype(int)\n",
    "\n",
    "                all_predictions.extend(predictions)\n",
    "                all_probabilities.extend(probabilities)\n",
    "\n",
    "        return np.array(all_predictions), np.array(all_probabilities)\n",
    "\n",
    "    def train_and_evaluate(\n",
    "        self,\n",
    "        feature_sets,\n",
    "        train_tokens,\n",
    "        test_tokens,\n",
    "        train_labels,\n",
    "        test_labels,\n",
    "        epochs=10,\n",
    "        batch_size=32,\n",
    "        validation_split=0.2,\n",
    "    ):\n",
    "        \"\"\"\n",
    "        训练和评估深度学习模型\n",
    "        \"\"\"\n",
    "        print(\"=\" * 60)\n",
    "        print(\"开始PyTorch深度学习模型训练与评估\")\n",
    "        print(\"=\" * 60)\n",
    "\n",
    "        # 1. 在密集特征上训练MLP\n",
    "        for feature_name, (X_train, X_test) in feature_sets.items():\n",
    "            if feature_name in [\"PCA\", \"Word2Vec\"]:  # 只在密集特征上训练MLP\n",
    "                print(f\"\\n训练MLP模型 - {feature_name}特征\")\n",
    "                print(\"-\" * 40)\n",
    "\n",
    "                # 确保数据是密集的\n",
    "                if hasattr(X_train, \"toarray\"):\n",
    "                    X_train_dense = X_train.toarray()\n",
    "                    X_test_dense = X_test.toarray()\n",
    "                else:\n",
    "                    X_train_dense = X_train\n",
    "                    X_test_dense = X_test\n",
    "\n",
    "                start_time = time.time()\n",
    "\n",
    "                # 划分训练和验证集\n",
    "                val_size = int(len(X_train_dense) * validation_split)\n",
    "                X_val = X_train_dense[:val_size]\n",
    "                y_val = train_labels[:val_size]\n",
    "                X_train_split = X_train_dense[val_size:]\n",
    "                y_train_split = train_labels[val_size:]\n",
    "\n",
    "                # 创建数据加载器\n",
    "                train_dataset = TextDataset(X_train_split, y_train_split)\n",
    "                val_dataset = TextDataset(X_val, y_val)\n",
    "                test_dataset = TextDataset(X_test_dense, test_labels)\n",
    "\n",
    "                train_loader = DataLoader(\n",
    "                    train_dataset, batch_size=batch_size, shuffle=True\n",
    "                )\n",
    "                val_loader = DataLoader(\n",
    "                    val_dataset, batch_size=batch_size, shuffle=False\n",
    "                )\n",
    "                test_loader = DataLoader(\n",
    "                    test_dataset, batch_size=batch_size, shuffle=False\n",
    "                )\n",
    "\n",
    "                # 创建和训练MLP模型\n",
    "                model = MLPModel(X_train_dense.shape[1])\n",
    "                model = self.train_model(model, train_loader, val_loader, epochs)\n",
    "\n",
    "                # 预测\n",
    "                y_pred, y_pred_proba = self.evaluate_model(model, test_loader)\n",
    "\n",
    "                # 计算指标\n",
    "                accuracy = accuracy_score(test_labels, y_pred)\n",
    "                auc_score = roc_auc_score(test_labels, y_pred_proba)\n",
    "                training_time = time.time() - start_time\n",
    "\n",
    "                # 存储结果\n",
    "                model_name = f\"MLP_{feature_name}\"\n",
    "                self.results[model_name] = {\n",
    "                    \"accuracy\": accuracy,\n",
    "                    \"auc\": auc_score,\n",
    "                    \"training_time\": training_time,\n",
    "                    \"predictions\": y_pred,\n",
    "                    \"probabilities\": y_pred_proba,\n",
    "                    \"model\": model,\n",
    "                }\n",
    "\n",
    "                print(f\"测试准确率: {accuracy:.4f}\")\n",
    "                print(f\"AUC: {auc_score:.4f}\")\n",
    "                print(f\"训练时间: {training_time:.2f}秒\")\n",
    "\n",
    "        # 2. 准备序列数据并训练LSTM和CNN\n",
    "        print(\"\\n准备序列数据...\")\n",
    "        X_train_seq, X_test_seq, word_to_idx = self.prepare_sequence_data(\n",
    "            train_tokens, test_tokens\n",
    "        )\n",
    "        vocab_size = len(word_to_idx)\n",
    "        max_length = X_train_seq.shape[1]\n",
    "\n",
    "        print(f\"词汇表大小: {vocab_size}\")\n",
    "        print(f\"序列长度: {max_length}\")\n",
    "\n",
    "        # 训练LSTM模型\n",
    "        print(\"\\n训练LSTM模型\")\n",
    "        print(\"-\" * 40)\n",
    "        start_time = time.time()\n",
    "\n",
    "        # 划分训练和验证集\n",
    "        val_size = int(len(X_train_seq) * validation_split)\n",
    "        X_val_seq = X_train_seq[:val_size]\n",
    "        y_val = train_labels[:val_size]\n",
    "        X_train_seq_split = X_train_seq[val_size:]\n",
    "        y_train_split = train_labels[val_size:]\n",
    "\n",
    "        # 创建数据加载器\n",
    "        train_dataset = SequenceDataset(X_train_seq_split, y_train_split)\n",
    "        val_dataset = SequenceDataset(X_val_seq, y_val)\n",
    "        test_dataset = SequenceDataset(X_test_seq, test_labels)\n",
    "\n",
    "        train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
    "        val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)\n",
    "        test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)\n",
    "\n",
    "        lstm_model = LSTMModel(vocab_size)\n",
    "        lstm_model = self.train_model(lstm_model, train_loader, val_loader, epochs)\n",
    "\n",
    "        # LSTM预测\n",
    "        lstm_pred, lstm_pred_proba = self.evaluate_model(lstm_model, test_loader)\n",
    "\n",
    "        lstm_accuracy = accuracy_score(test_labels, lstm_pred)\n",
    "        lstm_auc = roc_auc_score(test_labels, lstm_pred_proba)\n",
    "        lstm_time = time.time() - start_time\n",
    "\n",
    "        self.results[\"LSTM\"] = {\n",
    "            \"accuracy\": lstm_accuracy,\n",
    "            \"auc\": lstm_auc,\n",
    "            \"training_time\": lstm_time,\n",
    "            \"predictions\": lstm_pred,\n",
    "            \"probabilities\": lstm_pred_proba,\n",
    "            \"model\": lstm_model,\n",
    "        }\n",
    "\n",
    "        print(f\"LSTM测试准确率: {lstm_accuracy:.4f}\")\n",
    "        print(f\"LSTM AUC: {lstm_auc:.4f}\")\n",
    "        print(f\"LSTM训练时间: {lstm_time:.2f}秒\")\n",
    "\n",
    "        # 训练CNN模型\n",
    "        print(\"\\n训练CNN模型\")\n",
    "        print(\"-\" * 40)\n",
    "        start_time = time.time()\n",
    "\n",
    "        cnn_model = CNNModel(vocab_size)\n",
    "        cnn_model = self.train_model(cnn_model, train_loader, val_loader, epochs)\n",
    "\n",
    "        # CNN预测\n",
    "        cnn_pred, cnn_pred_proba = self.evaluate_model(cnn_model, test_loader)\n",
    "\n",
    "        cnn_accuracy = accuracy_score(test_labels, cnn_pred)\n",
    "        cnn_auc = roc_auc_score(test_labels, cnn_pred_proba)\n",
    "        cnn_time = time.time() - start_time\n",
    "\n",
    "        self.results[\"CNN\"] = {\n",
    "            \"accuracy\": cnn_accuracy,\n",
    "            \"auc\": cnn_auc,\n",
    "            \"training_time\": cnn_time,\n",
    "            \"predictions\": cnn_pred,\n",
    "            \"probabilities\": cnn_pred_proba,\n",
    "            \"model\": cnn_model,\n",
    "        }\n",
    "\n",
    "        print(f\"CNN测试准确率: {cnn_accuracy:.4f}\")\n",
    "        print(f\"CNN AUC: {cnn_auc:.4f}\")\n",
    "        print(f\"CNN训练时间: {cnn_time:.2f}秒\")\n",
    "\n",
    "    def print_summary(self):\n",
    "        \"\"\"\n",
    "        打印深度学习结果摘要\n",
    "        \"\"\"\n",
    "        print(\"\\n\" + \"=\" * 60)\n",
    "        print(\"PyTorch深度学习模型性能汇总\")\n",
    "        print(\"=\" * 60)\n",
    "        print(f\"{'模型':<15} {'准确率':<10} {'AUC':<10} {'训练时间(秒)':<12}\")\n",
    "        print(\"-\" * 60)\n",
    "\n",
    "        for model_name, result in self.results.items():\n",
    "            print(\n",
    "                f\"{model_name:<15} {result['accuracy']:<10.4f} {result['auc']:<10.4f} {result['training_time']:<12.2f}\"\n",
    "            )\n",
    "\n",
    "        # 找到最佳模型\n",
    "        if self.results:\n",
    "            best_model = max(self.results.items(), key=lambda x: x[1][\"accuracy\"])\n",
    "            print(\n",
    "                f\"\\n最佳PyTorch模型: {best_model[0]} (准确率: {best_model[1]['accuracy']:.4f})\"\n",
    "            )\n",
    "\n",
    "\n",
    "## 5.3 训练PyTorch深度学习模型\n",
    "\n",
    "# 实例化深度学习评估器\n",
    "dl_evaluator = PyTorchDLEvaluator()\n",
    "\n",
    "# 训练深度学习模型\n",
    "dl_evaluator.train_and_evaluate(\n",
    "    feature_sets,\n",
    "    train_tokens,\n",
    "    test_tokens,\n",
    "    train_labels,\n",
    "    test_labels,\n",
    "    epochs=10,\n",
    "    batch_size=64,\n",
    ")\n",
    "\n",
    "# 打印深度学习结果摘要\n",
    "dl_evaluator.print_summary()\n",
    "\n",
    "# 6. 结果分析与可视化\n",
    "\n",
    "## 6.1 综合模型性能对比\n",
    "\n",
    "\n",
    "def comprehensive_model_comparison(ml_evaluator, dl_evaluator):\n",
    "    \"\"\"\n",
    "    综合比较机器学习和深度学习模型\n",
    "    \"\"\"\n",
    "    # 整合所有结果\n",
    "    all_results = []\n",
    "\n",
    "    # 添加机器学习结果\n",
    "    for feature_name in ml_evaluator.results:\n",
    "        for model_name in ml_evaluator.results[feature_name]:\n",
    "            result = ml_evaluator.results[feature_name][model_name]\n",
    "            all_results.append(\n",
    "                {\n",
    "                    \"Category\": \"机器学习\",\n",
    "                    \"Feature\": feature_name,\n",
    "                    \"Model\": model_name,\n",
    "                    \"Full_Name\": f\"{model_name}_{feature_name}\",\n",
    "                    \"Accuracy\": result[\"accuracy\"],\n",
    "                    \"AUC\": result[\"auc\"],\n",
    "                    \"Training_Time\": result[\"training_time\"],\n",
    "                }\n",
    "            )\n",
    "\n",
    "    # 添加深度学习结果\n",
    "    for model_name in dl_evaluator.results:\n",
    "        result = dl_evaluator.results[model_name]\n",
    "        all_results.append(\n",
    "            {\n",
    "                \"Category\": \"深度学习\",\n",
    "                \"Feature\": (\n",
    "                    model_name.split(\"_\")[1] if \"_\" in model_name else \"Sequence\"\n",
    "                ),\n",
    "                \"Model\": model_name.split(\"_\")[0] if \"_\" in model_name else model_name,\n",
    "                \"Full_Name\": model_name,\n",
    "                \"Accuracy\": result[\"accuracy\"],\n",
    "                \"AUC\": result[\"auc\"],\n",
    "                \"Training_Time\": result[\"training_time\"],\n",
    "            }\n",
    "        )\n",
    "\n",
    "    all_results_df = pd.DataFrame(all_results)\n",
    "\n",
    "    # 创建综合可视化\n",
    "    fig, axes = plt.subplots(2, 2, figsize=(16, 12))\n",
    "    fig.suptitle(\n",
    "        \"机器学习 vs PyTorch深度学习模型性能综合对比\", fontsize=16, fontweight=\"bold\"\n",
    "    )\n",
    "\n",
    "    # 1. 准确率对比\n",
    "    ax1 = axes[0, 0]\n",
    "    sns.boxplot(data=all_results_df, x=\"Category\", y=\"Accuracy\", ax=ax1)\n",
    "    ax1.set_title(\"机器学习 vs 深度学习准确率分布\")\n",
    "    ax1.set_ylabel(\"准确率\")\n",
    "\n",
    "    # 2. AUC对比\n",
    "    ax2 = axes[0, 1]\n",
    "    sns.boxplot(data=all_results_df, x=\"Category\", y=\"AUC\", ax=ax2)\n",
    "    ax2.set_title(\"机器学习 vs 深度学习AUC分布\")\n",
    "    ax2.set_ylabel(\"AUC\")\n",
    "\n",
    "    # 3. Top-10最佳模型\n",
    "    ax3 = axes[1, 0]\n",
    "    top_models = all_results_df.nlargest(10, \"Accuracy\")\n",
    "    colors = [\"red\" if cat == \"深度学习\" else \"blue\" for cat in top_models[\"Category\"]]\n",
    "    ax3.barh(range(len(top_models)), top_models[\"Accuracy\"], color=colors, alpha=0.7)\n",
    "    ax3.set_yticks(range(len(top_models)))\n",
    "    ax3.set_yticklabels(top_models[\"Full_Name\"], fontsize=8)\n",
    "    ax3.set_xlabel(\"准确率\")\n",
    "    ax3.set_title(\"Top-10最佳模型(按准确率)\")\n",
    "\n",
    "    # 添加图例\n",
    "    from matplotlib.patches import Patch\n",
    "\n",
    "    legend_elements = [\n",
    "        Patch(facecolor=\"blue\", label=\"机器学习\"),\n",
    "        Patch(facecolor=\"red\", label=\"深度学习\"),\n",
    "    ]\n",
    "    ax3.legend(handles=legend_elements, loc=\"lower right\")\n",
    "\n",
    "    # 4. 准确率 vs 训练时间散点图\n",
    "    ax4 = axes[1, 1]\n",
    "    for category in all_results_df[\"Category\"].unique():\n",
    "        data = all_results_df[all_results_df[\"Category\"] == category]\n",
    "        ax4.scatter(\n",
    "            data[\"Training_Time\"], data[\"Accuracy\"], label=category, s=100, alpha=0.7\n",
    "        )\n",
    "    ax4.set_xlabel(\"训练时间(秒)\")\n",
    "    ax4.set_ylabel(\"准确率\")\n",
    "    ax4.set_title(\"准确率 vs 训练时间\")\n",
    "    ax4.set_xscale(\"log\")\n",
    "    ax4.legend()\n",
    "    ax4.grid(True, alpha=0.3)\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "    # 打印统计总结\n",
    "    print(\"\\n\" + \"=\" * 80)\n",
    "    print(\"模型性能综合对比统计\")\n",
    "    print(\"=\" * 80)\n",
    "\n",
    "    for category in all_results_df[\"Category\"].unique():\n",
    "        data = all_results_df[all_results_df[\"Category\"] == category]\n",
    "        print(f\"\\n{category}:\")\n",
    "        print(\n",
    "            f\"  平均准确率: {data['Accuracy'].mean():.4f} ± {data['Accuracy'].std():.4f}\"\n",
    "        )\n",
    "        print(f\"  平均AUC: {data['AUC'].mean():.4f} ± {data['AUC'].std():.4f}\")\n",
    "        print(\n",
    "            f\"  平均训练时间: {data['Training_Time'].mean():.2f} ± {data['Training_Time'].std():.2f}秒\"\n",
    "        )\n",
    "        print(\n",
    "            f\"  最佳准确率: {data['Accuracy'].max():.4f} ({data.loc[data['Accuracy'].idxmax(), 'Full_Name']})\"\n",
    "        )\n",
    "\n",
    "    return all_results_df\n",
    "\n",
    "\n",
    "# 执行综合对比\n",
    "all_results_df = comprehensive_model_comparison(ml_evaluator, dl_evaluator)\n",
    "\n",
    "# 7. 论文研究总结\n",
    "\n",
    "## 7.1 实验结果汇总\n",
    "\n",
    "\n",
    "def generate_research_summary(ml_evaluator, dl_evaluator, feature_sets):\n",
    "    \"\"\"\n",
    "    生成研究总结报告\n",
    "    \"\"\"\n",
    "    print(\"\\n\" + \"=\" * 100)\n",
    "    print(\"IMDb电影评论情感分析研究结果总结\")\n",
    "    print(\"=\" * 100)\n",
    "\n",
    "    # 1. 数据集概述\n",
    "    print(\"\\n1. 数据集概述\")\n",
    "    print(\"-\" * 50)\n",
    "    print(f\"训练集样本数: {len(train_labels)}\")\n",
    "    print(f\"测试集样本数: {len(test_labels)}\")\n",
    "    print(\n",
    "        f\"类别平衡性: 正面{sum(train_labels)/len(train_labels)*100:.1f}%, 负面{(1-sum(train_labels)/len(train_labels))*100:.1f}%\"\n",
    "    )\n",
    "\n",
    "    # 2. 特征工程结果\n",
    "    print(\"\\n2. 特征工程结果\")\n",
    "    print(\"-\" * 50)\n",
    "    for feature_name, (X_train, _) in feature_sets.items():\n",
    "        print(f\"{feature_name}特征维度: {X_train.shape[1]}\")\n",
    "    print(f\"PCA保留方差比例: {pca_model.explained_variance_ratio_.sum():.4f}\")\n",
    "    print(f\"Word2Vec词汇表大小: {len(w2v_model.wv.key_to_index)}\")\n",
    "\n",
    "    # 3. 机器学习模型结果\n",
    "    print(\"\\n3. 机器学习模型性能\")\n",
    "    print(\"-\" * 50)\n",
    "\n",
    "    best_ml_acc = 0\n",
    "    best_ml_info = {}\n",
    "\n",
    "    for feature_name in ml_evaluator.results:\n",
    "        feature_best_acc = 0\n",
    "        feature_best_model = \"\"\n",
    "\n",
    "        for model_name in ml_evaluator.results[feature_name]:\n",
    "            acc = ml_evaluator.results[feature_name][model_name][\"accuracy\"]\n",
    "            auc = ml_evaluator.results[feature_name][model_name][\"auc\"]\n",
    "\n",
    "            if acc > feature_best_acc:\n",
    "                feature_best_acc = acc\n",
    "                feature_best_model = model_name\n",
    "\n",
    "            if acc > best_ml_acc:\n",
    "                best_ml_acc = acc\n",
    "                best_ml_info = {\n",
    "                    \"feature\": feature_name,\n",
    "                    \"model\": model_name,\n",
    "                    \"accuracy\": acc,\n",
    "                    \"auc\": auc,\n",
    "                }\n",
    "\n",
    "        print(\n",
    "            f\"{feature_name}最佳模型: {feature_best_model} (准确率: {feature_best_acc:.4f})\"\n",
    "        )\n",
    "\n",
    "    print(f\"\\n机器学习最佳模型: {best_ml_info['model']} ({best_ml_info['feature']})\")\n",
    "    print(f\"最高准确率: {best_ml_info['accuracy']:.4f}\")\n",
    "    print(f\"对应AUC: {best_ml_info['auc']:.4f}\")\n",
    "\n",
    "    # 4. 深度学习模型结果\n",
    "    print(\"\\n4. PyTorch深度学习模型性能\")\n",
    "    print(\"-\" * 50)\n",
    "\n",
    "    best_dl_acc = 0\n",
    "    best_dl_info = {}\n",
    "\n",
    "    for model_name in dl_evaluator.results:\n",
    "        acc = dl_evaluator.results[model_name][\"accuracy\"]\n",
    "        auc = dl_evaluator.results[model_name][\"auc\"]\n",
    "        time_cost = dl_evaluator.results[model_name][\"training_time\"]\n",
    "\n",
    "        print(\n",
    "            f\"{model_name}: 准确率 {acc:.4f}, AUC {auc:.4f}, 训练时间 {time_cost:.1f}秒\"\n",
    "        )\n",
    "\n",
    "        if acc > best_dl_acc:\n",
    "            best_dl_acc = acc\n",
    "            best_dl_info = {\"model\": model_name, \"accuracy\": acc, \"auc\": auc}\n",
    "\n",
    "    print(f\"\\nPyTorch深度学习最佳模型: {best_dl_info['model']}\")\n",
    "    print(f\"最高准确率: {best_dl_info['accuracy']:.4f}\")\n",
    "    print(f\"对应AUC: {best_dl_info['auc']:.4f}\")\n",
    "\n",
    "    # 5. 模型比较结论\n",
    "    print(\"\\n5. 模型比较结论\")\n",
    "    print(\"-\" * 50)\n",
    "\n",
    "    if best_ml_acc > best_dl_acc:\n",
    "        print(\n",
    "            f\"机器学习模型性能更优: {best_ml_info['model']} ({best_ml_info['feature']}) vs {best_dl_info['model']}\"\n",
    "        )\n",
    "        print(f\"性能差异: {best_ml_acc - best_dl_acc:.4f}\")\n",
    "    else:\n",
    "        print(\n",
    "            f\"PyTorch深度学习模型性能更优: {best_dl_info['model']} vs {best_ml_info['model']} ({best_ml_info['feature']})\"\n",
    "        )\n",
    "        print(f\"性能差异: {best_dl_acc - best_ml_acc:.4f}\")\n",
    "\n",
    "    # 6. 特征方法比较\n",
    "    print(\"\\n6. 特征方法效果对比\")\n",
    "    print(\"-\" * 50)\n",
    "\n",
    "    feature_avg_performance = {}\n",
    "    for feature_name in ml_evaluator.results:\n",
    "        accuracies = [\n",
    "            ml_evaluator.results[feature_name][model][\"accuracy\"]\n",
    "            for model in ml_evaluator.results[feature_name]\n",
    "        ]\n",
    "        feature_avg_performance[feature_name] = np.mean(accuracies)\n",
    "\n",
    "    sorted_features = sorted(\n",
    "        feature_avg_performance.items(), key=lambda x: x[1], reverse=True\n",
    "    )\n",
    "\n",
    "    for i, (feature, avg_acc) in enumerate(sorted_features, 1):\n",
    "        print(f\"{i}. {feature}: 平均准确率 {avg_acc:.4f}\")\n",
    "\n",
    "    return {\n",
    "        \"best_ml\": best_ml_info,\n",
    "        \"best_dl\": best_dl_info,\n",
    "        \"feature_ranking\": sorted_features,\n",
    "    }\n",
    "\n",
    "\n",
    "# 生成研究总结\n",
    "research_summary = generate_research_summary(ml_evaluator, dl_evaluator, feature_sets)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
